mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-11-01 05:57:09 +00:00
Bugfixes and better admin chat system
This commit is contained in:
parent
cb818c0056
commit
3070ff893e
@ -3,12 +3,14 @@ package me.totalfreedom.totalfreedommod;
|
|||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import io.papermc.paper.event.player.AsyncChatEvent;
|
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||||
|
import me.totalfreedom.totalfreedommod.api.event.AdminChatEvent;
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Displayable;
|
import me.totalfreedom.totalfreedommod.rank.Displayable;
|
||||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
|
import net.kyori.adventure.key.Key;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.TextComponent;
|
import net.kyori.adventure.text.TextComponent;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
@ -44,7 +46,6 @@ public class ChatManager extends FreedomService
|
|||||||
String steamrolled = FUtil.steamroll(event.originalMessage());
|
String steamrolled = FUtil.steamroll(event.originalMessage());
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
FPlayer fPlayer = plugin.pl.getPlayer(player);
|
FPlayer fPlayer = plugin.pl.getPlayer(player);
|
||||||
PlayerData playerData = plugin.pl.getData(player);
|
|
||||||
|
|
||||||
// Chat is disabled
|
// Chat is disabled
|
||||||
if (!ConfigEntry.TOGGLE_CHAT.getBoolean() && !plugin.al.isAdmin(player))
|
if (!ConfigEntry.TOGGLE_CHAT.getBoolean() && !plugin.al.isAdmin(player))
|
||||||
@ -63,7 +64,7 @@ public class ChatManager extends FreedomService
|
|||||||
// Admin chat is enabled
|
// Admin chat is enabled
|
||||||
else if (fPlayer.inAdminChat())
|
else if (fPlayer.inAdminChat())
|
||||||
{
|
{
|
||||||
adminChat(player, steamrolled);
|
adminChat(player, steamrolled, true);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -140,6 +141,41 @@ public class ChatManager extends FreedomService
|
|||||||
Placeholder.component("message", filtered)));
|
Placeholder.component("message", filtered)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onAdminChat(AdminChatEvent event)
|
||||||
|
{
|
||||||
|
Displayable display = event.getDisplayable();
|
||||||
|
|
||||||
|
Component defaultFormat = FUtil.miniMessage("<prefix><dark_gray>[<aqua>ADMIN<dark_gray>] <dark_red><name> <dark_gray><tag><dark_gray>]<white>: <gold><message>",
|
||||||
|
Placeholder.component("prefix", event.getPrefix()),
|
||||||
|
Placeholder.component("name", event.getName()),
|
||||||
|
Placeholder.component("tag", getColoredTag(display)),
|
||||||
|
Placeholder.component("message", event.getMessage()));
|
||||||
|
|
||||||
|
plugin.getComponentLogger().info(defaultFormat);
|
||||||
|
;
|
||||||
|
server.getOnlinePlayers().stream().filter(player -> plugin.al.isAdmin(player)).forEach(player ->
|
||||||
|
{
|
||||||
|
Admin admin = plugin.al.getAdmin(player);
|
||||||
|
if (!Strings.isNullOrEmpty(admin.getAcFormat()))
|
||||||
|
{
|
||||||
|
String format = admin.getAcFormat();
|
||||||
|
String flatAbv = FUtil.miniMessage(display.getAbbr());
|
||||||
|
|
||||||
|
player.sendMessage(FUtil.miniMessage(format,
|
||||||
|
Placeholder.component("prefix", event.getPrefix()),
|
||||||
|
Placeholder.component("name", event.getName()),
|
||||||
|
Placeholder.unparsed("rank", flatAbv),
|
||||||
|
TagResolver.resolver("rankcolor", Tag.styling(getColor(display))),
|
||||||
|
Placeholder.component("message", event.getMessage())));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player.sendMessage(defaultFormat);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public TextColor getColor(Displayable display)
|
public TextColor getColor(Displayable display)
|
||||||
{
|
{
|
||||||
return display.getColor();
|
return display.getColor();
|
||||||
@ -150,40 +186,27 @@ public class ChatManager extends FreedomService
|
|||||||
return display.getColoredTag();
|
return display.getColoredTag();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void adminChat(Component name, Displayable displayable, Component message, boolean async)
|
||||||
|
{
|
||||||
|
AdminChatEvent event = new AdminChatEvent(name, displayable, message, async);
|
||||||
|
event.callEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void adminChat(Key key, Component prefix, Component name, Displayable displayable, Component message, boolean async)
|
||||||
|
{
|
||||||
|
AdminChatEvent event = new AdminChatEvent(key, prefix, name, displayable, message, async);
|
||||||
|
event.callEvent();
|
||||||
|
}
|
||||||
|
|
||||||
public void adminChat(CommandSender sender, String message)
|
public void adminChat(CommandSender sender, String message)
|
||||||
|
{
|
||||||
|
adminChat(sender, message, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void adminChat(CommandSender sender, String message, boolean async)
|
||||||
{
|
{
|
||||||
Displayable display = plugin.rm.getDisplay(sender);
|
Displayable display = plugin.rm.getDisplay(sender);
|
||||||
FLog.info("[ADMIN] " + sender.getName() + " " + display.getTag() + ": " + message, true);
|
adminChat(Component.text(sender.getName()), display, Component.text(message), async);
|
||||||
|
|
||||||
if (plugin.dc != null)
|
|
||||||
{
|
|
||||||
plugin.dc.messageAdminChatChannel(sender.getName() + " \u00BB " + message);
|
|
||||||
}
|
|
||||||
|
|
||||||
server.getOnlinePlayers().stream().filter(player -> plugin.al.isAdmin(player)).forEach(player ->
|
|
||||||
{
|
|
||||||
Admin admin = plugin.al.getAdmin(player);
|
|
||||||
if (!Strings.isNullOrEmpty(admin.getAcFormat()))
|
|
||||||
{
|
|
||||||
String format = admin.getAcFormat();
|
|
||||||
String flatAbv = FUtil.miniMessage(display.getAbbr());
|
|
||||||
|
|
||||||
player.sendMessage(FUtil.miniMessage(format,
|
|
||||||
Placeholder.unparsed("name", sender.getName()),
|
|
||||||
Placeholder.unparsed("rank", flatAbv),
|
|
||||||
TagResolver.resolver("rankcolor", Tag.styling(getColor(display))),
|
|
||||||
Placeholder.unparsed("message", message)));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Component defaultFormat = FUtil.miniMessage("<dark_gray>[<aqua>ADMIN<dark_gray>] <dark_red><name> <dark_gray><tag><dark_gray>]<white>: <gold><message>",
|
|
||||||
Placeholder.unparsed("<name>", sender.getName()),
|
|
||||||
Placeholder.component("<tag>", getColoredTag(display)),
|
|
||||||
Placeholder.unparsed("<message>", message));
|
|
||||||
|
|
||||||
player.sendMessage(defaultFormat);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reportAction(Player reporter, String reportedName, String report)
|
public void reportAction(Player reporter, String reportedName, String report)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package me.totalfreedom.totalfreedommod;
|
package me.totalfreedom.totalfreedommod;
|
||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.event.ClickEvent;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
@ -24,6 +24,6 @@ public class CommandSpy extends FreedomService
|
|||||||
server.getOnlinePlayers().stream().filter(player -> plugin.al.isAdmin(player)
|
server.getOnlinePlayers().stream().filter(player -> plugin.al.isAdmin(player)
|
||||||
&& plugin.al.getAdmin(player).getCommandSpy() && player != event.getPlayer()).forEach(player ->
|
&& plugin.al.getAdmin(player).getCommandSpy() && player != event.getPlayer()).forEach(player ->
|
||||||
player.sendMessage(Component.text(event.getPlayer().getName()).append(Component.text(": "))
|
player.sendMessage(Component.text(event.getPlayer().getName()).append(Component.text(": "))
|
||||||
.append(Component.text(event.getMessage()))));
|
.append(Component.text(event.getMessage())).color(NamedTextColor.GRAY)));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
package me.totalfreedom.totalfreedommod.api.event;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.rank.Displayable;
|
||||||
|
import net.kyori.adventure.key.Key;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class AdminChatEvent extends Event
|
||||||
|
{
|
||||||
|
private static HandlerList handlerList = new HandlerList();
|
||||||
|
//--
|
||||||
|
private Key identifier;
|
||||||
|
private Component prefix = Component.empty();
|
||||||
|
private Component name;
|
||||||
|
private Displayable displayable;
|
||||||
|
private Component message;
|
||||||
|
|
||||||
|
public AdminChatEvent(Key identifier, Component prefix, Component name, Displayable rank, Component message, boolean async)
|
||||||
|
{
|
||||||
|
super(async);
|
||||||
|
this.identifier = identifier;
|
||||||
|
this.prefix = prefix;
|
||||||
|
this.name = name;
|
||||||
|
this.displayable = rank;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AdminChatEvent(Component name, Displayable rank, Component message, boolean async)
|
||||||
|
{
|
||||||
|
super(async);
|
||||||
|
this.identifier = Key.key("tfm", "default");
|
||||||
|
this.name = name;
|
||||||
|
this.displayable = rank;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList()
|
||||||
|
{
|
||||||
|
return handlerList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull HandlerList getHandlers()
|
||||||
|
{
|
||||||
|
return handlerList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Key getIdentifier()
|
||||||
|
{
|
||||||
|
return identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Component getPrefix()
|
||||||
|
{
|
||||||
|
return prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Component getName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Displayable getDisplayable()
|
||||||
|
{
|
||||||
|
return displayable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Component getMessage()
|
||||||
|
{
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,7 @@ package me.totalfreedom.totalfreedommod.command;
|
|||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||||
|
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.event.ClickEvent;
|
import net.kyori.adventure.text.event.ClickEvent;
|
||||||
@ -155,6 +156,8 @@ public class Command_tag extends FreedomCommand
|
|||||||
int tagLimit = (plugin.al.isAdmin(sender) ? 30 : 20);
|
int tagLimit = (plugin.al.isAdmin(sender) ? 30 : 20);
|
||||||
if (steamrolled.length() > tagLimit)
|
if (steamrolled.length() > tagLimit)
|
||||||
{
|
{
|
||||||
|
FLog.debug("FUCK YOU " + steamrolled.length());
|
||||||
|
FLog.debug("FUCK YOU " + steamrolled);
|
||||||
msgNew("<red>That tag is too long (Max is <max> characters).", Placeholder.unparsed("max", String.valueOf(tagLimit)));
|
msgNew("<red>That tag is too long (Max is <max> characters).", Placeholder.unparsed("max", String.valueOf(tagLimit)));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -11,20 +11,27 @@ import me.totalfreedom.discord.TFD4J;
|
|||||||
import me.totalfreedom.discord.util.SnowflakeEntry;
|
import me.totalfreedom.discord.util.SnowflakeEntry;
|
||||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||||
|
import me.totalfreedom.totalfreedommod.api.event.AdminChatEvent;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Displayable;
|
import me.totalfreedom.totalfreedommod.rank.Displayable;
|
||||||
import me.totalfreedom.totalfreedommod.rank.GroupProvider;
|
import me.totalfreedom.totalfreedommod.rank.GroupProvider;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Title;
|
import me.totalfreedom.totalfreedommod.rank.Title;
|
||||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
|
import net.kyori.adventure.key.Key;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.TextComponent;
|
||||||
|
import net.kyori.adventure.text.event.ClickEvent;
|
||||||
|
import net.kyori.adventure.text.event.HoverEvent;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import net.kyori.adventure.text.format.TextColor;
|
import net.kyori.adventure.text.format.TextColor;
|
||||||
import net.md_5.bungee.api.chat.ClickEvent;
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
public class AdminChatListener
|
public class AdminChatListener
|
||||||
{
|
{
|
||||||
|
private static final Key identifier = Key.key("tfd4j", "discord_admin_chat");
|
||||||
|
//--
|
||||||
private final Bot bot;
|
private final Bot bot;
|
||||||
private final TFD4J tfd4j;
|
private final TFD4J tfd4j;
|
||||||
|
|
||||||
@ -34,11 +41,6 @@ public class AdminChatListener
|
|||||||
this.bot = tfd4j.getBot();
|
this.bot = tfd4j.getBot();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TextColor getColor(Displayable display)
|
|
||||||
{
|
|
||||||
return display.getColor();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void adminChatBound()
|
public void adminChatBound()
|
||||||
{
|
{
|
||||||
tfd4j.getBot()
|
tfd4j.getBot()
|
||||||
@ -62,65 +64,22 @@ public class AdminChatListener
|
|||||||
public void createMessageSpec(MessageCreateEvent m)
|
public void createMessageSpec(MessageCreateEvent m)
|
||||||
{
|
{
|
||||||
Member member = m.getMember().orElseThrow(IllegalAccessError::new);
|
Member member = m.getMember().orElseThrow(IllegalAccessError::new);
|
||||||
String tag = tfd4j.getBot().getTFM().getDisplay(member);
|
Component name = Component.text(member.getDisplayName());
|
||||||
Message msg = m.getMessage();
|
Message msg = m.getMessage();
|
||||||
String mediamessage = ChatColor.YELLOW + "[Media]";
|
|
||||||
|
|
||||||
StringBuilder logmessage = new StringBuilder(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_AQUA + "Discord" + ChatColor.DARK_GRAY + "] " + ChatColor.RESET);
|
TextComponent attachments = Component.empty();
|
||||||
String lm = ChatColor.DARK_RED + member.getDisplayName() + " "
|
|
||||||
+ ChatColor.DARK_GRAY + tag + ChatColor.DARK_GRAY
|
|
||||||
+ ChatColor.WHITE + ": " + ChatColor.GOLD + FUtil.colorize(msg.getContent());
|
|
||||||
logmessage.append(lm);
|
|
||||||
|
|
||||||
if (!msg.getAttachments().isEmpty())
|
|
||||||
{
|
|
||||||
|
|
||||||
logmessage.append(mediamessage); // Actually for logging...
|
|
||||||
|
|
||||||
}
|
|
||||||
FLog.info(logmessage.toString());
|
|
||||||
|
|
||||||
Bukkit.getOnlinePlayers().stream().filter(player -> TotalFreedomMod.getPlugin().al.isAdmin(player)).forEach(player ->
|
|
||||||
{
|
|
||||||
StringBuilder message = new StringBuilder(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_AQUA + "Discord" + ChatColor.DARK_GRAY + "] " + ChatColor.RESET);
|
|
||||||
|
|
||||||
ComponentBuilder builder = new ComponentBuilder(message.toString());
|
|
||||||
|
|
||||||
Admin admin = TotalFreedomMod.getPlugin().al.getAdmin(player);
|
|
||||||
String format = admin.getAcFormat();
|
|
||||||
if (!Strings.isNullOrEmpty(format))
|
|
||||||
{
|
|
||||||
Displayable display = getDisplay(member);
|
|
||||||
TextColor color = getColor(display);
|
|
||||||
String m1 = format.replace("%name%", member.getDisplayName())
|
|
||||||
.replace("%rank%", FUtil.miniMessage(display.getAbbr()))
|
|
||||||
.replace("%rankcolor%", color.toString())
|
|
||||||
.replace("%msg%", FUtil.colorize(msg.getContent()));
|
|
||||||
builder.append(FUtil.colorize(m1));
|
|
||||||
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
String m1 = ChatColor.DARK_RED + member.getDisplayName() + " "
|
|
||||||
+ ChatColor.DARK_GRAY + tag + ChatColor.DARK_GRAY
|
|
||||||
+ ChatColor.WHITE + ": " + ChatColor.GOLD + FUtil.colorize(msg.getContent());
|
|
||||||
builder.append(m1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!msg.getAttachments().isEmpty())
|
|
||||||
{
|
|
||||||
for (Attachment attachment : msg.getAttachments())
|
for (Attachment attachment : msg.getAttachments())
|
||||||
{
|
{
|
||||||
TextComponent text = new TextComponent(mediamessage);
|
attachments = attachments.append(
|
||||||
text.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, attachment.getUrl()));
|
Component.text("[Media] ", NamedTextColor.YELLOW)
|
||||||
if (!msg.getContent().isEmpty())
|
.clickEvent(ClickEvent.openUrl(attachment.getUrl()))
|
||||||
{
|
.hoverEvent(HoverEvent.showText(Component.text(attachment.getUrl()))));
|
||||||
builder.append(" ");
|
|
||||||
}
|
}
|
||||||
builder.append(text);
|
|
||||||
}
|
TextComponent message = Component.text(msg.getContent()).append(msg.getAttachments().isEmpty() ?
|
||||||
}
|
Component.empty() : Component.space().append(attachments));
|
||||||
player.spigot().sendMessage(builder.create());
|
|
||||||
});
|
TotalFreedomMod.getPlugin().cm.adminChat(identifier, FUtil.miniMessage("<dark_gray>[<dark_aqua>Discord</dark_aqua>] </dark_gray>"), name, getDisplay(member), message, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Displayable getDisplay(Member member)
|
public Displayable getDisplay(Member member)
|
||||||
@ -129,7 +88,9 @@ public class AdminChatListener
|
|||||||
// Server Owner
|
// Server Owner
|
||||||
if (server == null) throw new IllegalStateException();
|
if (server == null) throw new IllegalStateException();
|
||||||
|
|
||||||
return member.getRoles().map(role ->
|
return member.getRoles()
|
||||||
|
.filter(role -> SnowflakeEntry.acceptableRoleIDs().contains(role.getId()))
|
||||||
|
.map(role ->
|
||||||
{
|
{
|
||||||
if (role.getId().equals(SnowflakeEntry.OWNER_ROLE_ID.getSnowflake()))
|
if (role.getId().equals(SnowflakeEntry.OWNER_ROLE_ID.getSnowflake()))
|
||||||
{
|
{
|
||||||
@ -154,8 +115,13 @@ public class AdminChatListener
|
|||||||
return GroupProvider.MASTER_BUILDER.getGroup();
|
return GroupProvider.MASTER_BUILDER.getGroup();
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
return null;
|
return GroupProvider.OP.getGroup(); // This should never be reached.
|
||||||
}
|
}
|
||||||
}).blockFirst();
|
}).blockFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Key getIdentifier()
|
||||||
|
{
|
||||||
|
return identifier;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,14 @@
|
|||||||
package me.totalfreedom.discord.listener;
|
package me.totalfreedom.discord.listener;
|
||||||
|
|
||||||
|
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||||
import me.totalfreedom.discord.Bot;
|
import me.totalfreedom.discord.Bot;
|
||||||
import me.totalfreedom.discord.TFD4J;
|
import me.totalfreedom.discord.TFD4J;
|
||||||
import me.totalfreedom.discord.util.Utilities;
|
import me.totalfreedom.discord.util.Utilities;
|
||||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||||
|
import me.totalfreedom.totalfreedommod.api.event.AdminChatEvent;
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
|
import net.kyori.adventure.key.Key;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
@ -20,6 +24,8 @@ import org.bukkit.event.player.PlayerQuitEvent;
|
|||||||
|
|
||||||
public class BukkitNative implements Listener
|
public class BukkitNative implements Listener
|
||||||
{
|
{
|
||||||
|
|
||||||
|
//--
|
||||||
private final TotalFreedomMod commons;
|
private final TotalFreedomMod commons;
|
||||||
private final Bot bot;
|
private final Bot bot;
|
||||||
private final TFD4J tfd4j;
|
private final TFD4J tfd4j;
|
||||||
@ -74,17 +80,26 @@ public class BukkitNative implements Listener
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
public void onAsyncPlayerChat(AsyncPlayerChatEvent event)
|
public void onAsyncPlayerChat(AsyncChatEvent event)
|
||||||
{
|
{
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
String message = event.getMessage();
|
String message = FUtil.steamroll(event.message());
|
||||||
|
|
||||||
if (!ConfigEntry.ADMIN_ONLY_MODE.getBoolean() && !tfd4j.getServer().hasWhitelist()
|
if (!ConfigEntry.ADMIN_ONLY_MODE.getBoolean() && !tfd4j.getServer().hasWhitelist()
|
||||||
&& !commons.pl.getPlayer(player).isMuted() && bot != null)
|
&& !commons.pl.getPlayer(player).isMuted() && !commons.pl.getPlayer(player).inAdminChat() && bot != null)
|
||||||
{
|
{
|
||||||
tfd4j.getImpl().messageChatChannel(player.getName()
|
tfd4j.getImpl().messageChatChannel(player.getName()
|
||||||
+ " \u00BB "
|
+ " \u00BB "
|
||||||
+ ChatColor.stripColor(message), true);
|
+ message, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onAdminChat(AdminChatEvent event)
|
||||||
|
{
|
||||||
|
if (!event.getIdentifier().equals(AdminChatListener.getIdentifier()))
|
||||||
|
{
|
||||||
|
tfd4j.getImpl().messageAdminChatChannel(FUtil.steamroll(event.getName()) + " » " + FUtil.steamroll(event.getMessage()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,9 @@ package me.totalfreedom.discord.util;
|
|||||||
import discord4j.common.util.Snowflake;
|
import discord4j.common.util.Snowflake;
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public enum SnowflakeEntry
|
public enum SnowflakeEntry
|
||||||
{
|
{
|
||||||
ADMIN_CHAT_CHANNEL_ID(ConfigEntry.DISCORD_ADMINCHAT_CHANNEL_ID),
|
ADMIN_CHAT_CHANNEL_ID(ConfigEntry.DISCORD_ADMINCHAT_CHANNEL_ID),
|
||||||
@ -32,4 +35,17 @@ public enum SnowflakeEntry
|
|||||||
{
|
{
|
||||||
return Snowflake.of(entry.getString());
|
return Snowflake.of(entry.getString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Set<Snowflake> acceptableRoleIDs()
|
||||||
|
{
|
||||||
|
Set<Snowflake> acceptableRoleIDs = new HashSet<>();
|
||||||
|
acceptableRoleIDs.add(SnowflakeEntry.OWNER_ROLE_ID.getSnowflake());
|
||||||
|
acceptableRoleIDs.add(SnowflakeEntry.DEVELOPER_ROLE_ID.getSnowflake());
|
||||||
|
acceptableRoleIDs.add(SnowflakeEntry.EXECUTIVE_ROLE_ID.getSnowflake());
|
||||||
|
acceptableRoleIDs.add(SnowflakeEntry.ASSISTANT_EXECUTIVE_ROLE_ID.getSnowflake());
|
||||||
|
acceptableRoleIDs.add(SnowflakeEntry.SENIOR_ADMIN_ROLE_ID.getSnowflake());
|
||||||
|
acceptableRoleIDs.add(SnowflakeEntry.ADMIN_ROLE_ID.getSnowflake());
|
||||||
|
acceptableRoleIDs.add(SnowflakeEntry.MASTERBUILDER_ROLE_ID.getSnowflake());
|
||||||
|
return acceptableRoleIDs;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user