Bugfixes and better admin chat system

This commit is contained in:
Video
2023-04-05 16:13:05 -06:00
parent cb818c0056
commit 3070ff893e
7 changed files with 225 additions and 128 deletions

View File

@ -3,12 +3,14 @@ package me.totalfreedom.totalfreedommod;
import com.google.common.base.Strings;
import io.papermc.paper.event.player.AsyncChatEvent;
import me.totalfreedom.totalfreedommod.admin.Admin;
import me.totalfreedom.totalfreedommod.api.event.AdminChatEvent;
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.player.PlayerData;
import me.totalfreedom.totalfreedommod.rank.Displayable;
import me.totalfreedom.totalfreedommod.util.FLog;
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.format.NamedTextColor;
@ -44,7 +46,6 @@ public class ChatManager extends FreedomService
String steamrolled = FUtil.steamroll(event.originalMessage());
Player player = event.getPlayer();
FPlayer fPlayer = plugin.pl.getPlayer(player);
PlayerData playerData = plugin.pl.getData(player);
// Chat is disabled
if (!ConfigEntry.TOGGLE_CHAT.getBoolean() && !plugin.al.isAdmin(player))
@ -63,7 +64,7 @@ public class ChatManager extends FreedomService
// Admin chat is enabled
else if (fPlayer.inAdminChat())
{
adminChat(player, steamrolled);
adminChat(player, steamrolled, true);
event.setCancelled(true);
return;
}
@ -140,6 +141,41 @@ public class ChatManager extends FreedomService
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)
{
return display.getColor();
@ -150,40 +186,27 @@ public class ChatManager extends FreedomService
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)
{
adminChat(sender, message, false);
}
public void adminChat(CommandSender sender, String message, boolean async)
{
Displayable display = plugin.rm.getDisplay(sender);
FLog.info("[ADMIN] " + sender.getName() + " " + display.getTag() + ": " + message, true);
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);
}
});
adminChat(Component.text(sender.getName()), display, Component.text(message), async);
}
public void reportAction(Player reporter, String reportedName, String report)

View File

@ -1,7 +1,7 @@
package me.totalfreedom.totalfreedommod;
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.EventPriority;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
@ -24,6 +24,6 @@ public class CommandSpy extends FreedomService
server.getOnlinePlayers().stream().filter(player -> plugin.al.isAdmin(player)
&& plugin.al.getAdmin(player).getCommandSpy() && player != event.getPlayer()).forEach(player ->
player.sendMessage(Component.text(event.getPlayer().getName()).append(Component.text(": "))
.append(Component.text(event.getMessage()))));
.append(Component.text(event.getMessage())).color(NamedTextColor.GRAY)));
}
}

View File

@ -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;
}
}

View File

@ -3,6 +3,7 @@ package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.player.PlayerData;
import me.totalfreedom.totalfreedommod.util.FLog;
import me.totalfreedom.totalfreedommod.util.FUtil;
import net.kyori.adventure.text.Component;
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);
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)));
return true;
}