From 0f456fa81a5536d3bae824efbf94568ac2f854f3 Mon Sep 17 00:00:00 2001 From: Daniel McAssey Date: Sun, 12 Jan 2025 04:58:57 +0000 Subject: [PATCH] fix(server): improve chat command colours --- GLOKON.Baiters.Core/BaitersServer.cs | 7 ++-- GLOKON.Baiters.Core/Chat/ChatManager.cs | 7 ++-- .../Constants/MessageColour.cs | 11 ++++++ .../Packets/Handlers/InstanceActorHandler.cs | 4 +-- .../Packets/Handlers/NewPlayerJoinHandler.cs | 7 ++-- GLOKON.Baiters.Core/Packets/PacketManager.cs | 2 +- .../BanManagerPlugin.cs | 11 +++--- .../ChatCommandPlugin.cs | 35 ++++++++++--------- 8 files changed, 50 insertions(+), 34 deletions(-) create mode 100644 GLOKON.Baiters.Core/Constants/MessageColour.cs diff --git a/GLOKON.Baiters.Core/BaitersServer.cs b/GLOKON.Baiters.Core/BaitersServer.cs index a430226..b0de196 100644 --- a/GLOKON.Baiters.Core/BaitersServer.cs +++ b/GLOKON.Baiters.Core/BaitersServer.cs @@ -166,6 +166,7 @@ public bool TryGetPlayer(ulong steamId, out Player? player) public void KickPlayer(ulong steamId) { + SendPacket(new("kick"), DataChannel.GameState, steamId); SendPacket(new("peer_was_kicked") { ["user_id"] = (long)steamId, @@ -174,8 +175,8 @@ public void KickPlayer(ulong steamId) if (_players.TryGetValue(steamId, out var player) && player != null) { - SendMessage($"Kicked {player.FisherName}", steamId: steamId); - SendMessage($"{player.FisherName} was kicked from the lobby!"); + SendMessage($"Kicked {player.FisherName}", MessageColour.Error, steamId); + SendMessage($"{player.FisherName} was kicked from the lobby!", MessageColour.Error); } } @@ -217,7 +218,7 @@ public void SpawnActor(Actor actor) SendActor(actorId, actor); } - public void SendMessage(string message, string color = "ffffff", ulong? steamId = null) + public void SendMessage(string message, string color = MessageColour.Default, ulong? steamId = null) { SendPacket(new("message") { diff --git a/GLOKON.Baiters.Core/Chat/ChatManager.cs b/GLOKON.Baiters.Core/Chat/ChatManager.cs index 78dcae0..3e305d7 100644 --- a/GLOKON.Baiters.Core/Chat/ChatManager.cs +++ b/GLOKON.Baiters.Core/Chat/ChatManager.cs @@ -1,4 +1,5 @@ using GLOKON.Baiters.Core.Configuration; +using GLOKON.Baiters.Core.Constants; using Microsoft.Extensions.Options; using System.Collections.Concurrent; @@ -21,14 +22,14 @@ public ChatManager(IOptions _options, BaitersServer server) return; } - server.SendMessage("-- Help --", "0f0f0f", sender); + server.SendMessage("-- Help --", MessageColour.Information, sender); foreach (var chatCommand in _commands) { - server.SendMessage(string.Format("- {0}: {1}", chatCommand.Key, chatCommand.Value.HelpText), "0f0f0f", sender); + server.SendMessage(string.Format("- {0}: {1}", chatCommand.Key, chatCommand.Value.HelpText), MessageColour.Information, sender); } - server.SendMessage("----", "0f0f0f", sender); + server.SendMessage("----", MessageColour.Information, sender); }); } diff --git a/GLOKON.Baiters.Core/Constants/MessageColour.cs b/GLOKON.Baiters.Core/Constants/MessageColour.cs new file mode 100644 index 0000000..d06fed2 --- /dev/null +++ b/GLOKON.Baiters.Core/Constants/MessageColour.cs @@ -0,0 +1,11 @@ +namespace GLOKON.Baiters.Core.Constants +{ + public sealed class MessageColour + { + public const string Default = "ffffff"; + public const string Success = "16a34a"; + public const string Warning = "ca8a04"; + public const string Error = "dc2626"; + public const string Information = "2563eb"; + } +} diff --git a/GLOKON.Baiters.Core/Packets/Handlers/InstanceActorHandler.cs b/GLOKON.Baiters.Core/Packets/Handlers/InstanceActorHandler.cs index f338499..05752f2 100644 --- a/GLOKON.Baiters.Core/Packets/Handlers/InstanceActorHandler.cs +++ b/GLOKON.Baiters.Core/Packets/Handlers/InstanceActorHandler.cs @@ -18,8 +18,8 @@ public void Handle(ulong sender, Packet data) if (server.TryGetPlayer(sender, out var playerToKick) && playerToKick != null) { // Kick the player because the spawned in a actor that only the server should be able to spawn! - server.SendPacket(new("kick"), DataChannel.GameState, sender); - server.SendMessage($"{playerToKick.FisherName} was kicked for trying to spawn fish & items"); + server.KickPlayer(sender); + server.SendMessage($"{playerToKick.FisherName} was kicked for trying to spawn fish & items", MessageColour.Error); } } else diff --git a/GLOKON.Baiters.Core/Packets/Handlers/NewPlayerJoinHandler.cs b/GLOKON.Baiters.Core/Packets/Handlers/NewPlayerJoinHandler.cs index 0812926..338ea14 100644 --- a/GLOKON.Baiters.Core/Packets/Handlers/NewPlayerJoinHandler.cs +++ b/GLOKON.Baiters.Core/Packets/Handlers/NewPlayerJoinHandler.cs @@ -6,13 +6,13 @@ namespace GLOKON.Baiters.Core.Packets.Handlers { - internal class NewPlayerJoinHandler(BaitersServer server, string? joinMessage) : IPacketHandler + internal class NewPlayerJoinHandler(BaitersServer server, string commandPrefix, string? joinMessage) : IPacketHandler { public void Handle(ulong sender, Packet data) { if (!string.IsNullOrEmpty(joinMessage)) { - server.SendMessage(joinMessage, steamId: sender); + server.SendMessage(joinMessage, MessageColour.Information, sender); } server.SendPacket(new("recieve_host") @@ -22,7 +22,8 @@ public void Handle(ulong sender, Packet data) if (server.IsAdmin(sender)) { - server.SendMessage("!!You are an admin!!", "0f0f0f", sender); + server.SendMessage("##You are an admin##", MessageColour.Success, sender); + server.SendMessage(string.Format("Use '{0}help' to find out what commands are available", commandPrefix), MessageColour.Success, sender); } Task.Run(async () => diff --git a/GLOKON.Baiters.Core/Packets/PacketManager.cs b/GLOKON.Baiters.Core/Packets/PacketManager.cs index ee45004..832f257 100644 --- a/GLOKON.Baiters.Core/Packets/PacketManager.cs +++ b/GLOKON.Baiters.Core/Packets/PacketManager.cs @@ -22,7 +22,7 @@ public PacketManager(IOptions options, BaitersServer server) public void Setup() { handlers.Add("handshake", new HandshakeHandler(server)); - handlers.Add("new_player_join", new NewPlayerJoinHandler(server, options.JoinMessage)); + handlers.Add("new_player_join", new NewPlayerJoinHandler(server, options.CommandPrefix, options.JoinMessage)); handlers.Add("instance_actor", new InstanceActorHandler(server)); handlers.Add("actor_update", new ActorUpdateHandler(server)); handlers.Add("actor_animation_update", new ActorAnimationUpdateHandler(server)); diff --git a/GLOKON.Baiters.Plugins.BanManager/BanManagerPlugin.cs b/GLOKON.Baiters.Plugins.BanManager/BanManagerPlugin.cs index 8482b72..263d8fd 100644 --- a/GLOKON.Baiters.Plugins.BanManager/BanManagerPlugin.cs +++ b/GLOKON.Baiters.Plugins.BanManager/BanManagerPlugin.cs @@ -1,4 +1,5 @@ using GLOKON.Baiters.Core; +using GLOKON.Baiters.Core.Constants; using GLOKON.Baiters.Core.Plugins; using Newtonsoft.Json; using Serilog; @@ -42,14 +43,14 @@ public override void OnInit() if (commandParams.Length < 1) { - GM.Server.SendMessage("Invalid ban command, not enough parameters", steamId: sender); + GM.Server.SendMessage("Invalid ban command, not enough parameters", MessageColour.Error, sender); return; } bool didParseSteamId = ulong.TryParse(commandParams[0], out var steamId); if (!didParseSteamId) { - GM.Server.SendMessage("Invalid SteamID, could not be parsed", steamId: sender); + GM.Server.SendMessage("Invalid SteamID, could not be parsed", MessageColour.Error, sender); return; } @@ -70,14 +71,14 @@ public override void OnInit() }); GM.Chat.ListenFor("ban.list", "List all players that are currently banned", (sender, commandParams) => { - GM.Server.SendMessage("-- Help --", "0f0f0f", sender); + GM.Server.SendMessage("-- Ban List --", MessageColour.Information, sender); foreach (var playerBan in _playerBans) { - GM.Server.SendMessage(string.Format("[{0}] {1}: {2}", playerBan.Key, playerBan.Value.FisherName, playerBan.Value.Reason ?? "(No Reason Given)"), "0f0f0f", sender); + GM.Server.SendMessage(string.Format("[{0}] {1}: {2}", playerBan.Key, playerBan.Value.FisherName, playerBan.Value.Reason ?? "(No Reason Given)"), MessageColour.Information, sender); } - GM.Server.SendMessage("----", "0f0f0f", sender); + GM.Server.SendMessage("----", MessageColour.Information, sender); }); } diff --git a/GLOKON.Baiters.Plugins.ChatCommand/ChatCommandPlugin.cs b/GLOKON.Baiters.Plugins.ChatCommand/ChatCommandPlugin.cs index 776faef..9e897c2 100644 --- a/GLOKON.Baiters.Plugins.ChatCommand/ChatCommandPlugin.cs +++ b/GLOKON.Baiters.Plugins.ChatCommand/ChatCommandPlugin.cs @@ -1,4 +1,5 @@ using GLOKON.Baiters.Core; +using GLOKON.Baiters.Core.Constants; using GLOKON.Baiters.Core.Plugins; using System.Reflection; @@ -22,14 +23,14 @@ public override void OnInit() return; } - GM.Server.SendMessage(string.Format("-- Players ({0}/{1}) --", GM.Server.Players.Count(), GM.Options.MaxPlayers), "0f0f0f", sender); + GM.Server.SendMessage(string.Format("-- Players ({0}/{1}) --", GM.Server.Players.Count(), GM.Options.MaxPlayers), MessageColour.Information, sender); foreach (var player in GM.Server.Players) { - GM.Server.SendMessage(string.Format("- [{0}] {1}", player.Key, player.Value.FisherName), "0f0f0f", sender); + GM.Server.SendMessage(string.Format("- [{0}] {1}", player.Key, player.Value.FisherName), MessageColour.Information, sender); } - GM.Server.SendMessage("----", "0f0f0f", sender); + GM.Server.SendMessage("----", MessageColour.Information, sender); }); GM.Chat.ListenFor("spawn", "Spawn a new element on the server", (sender, commandParams) => @@ -41,18 +42,18 @@ public override void OnInit() if (commandParams.Length < 1) { - GM.Server.SendMessage("Invalid spawn command, not enough parameters", steamId: sender); + GM.Server.SendMessage("Invalid spawn command, not enough parameters", MessageColour.Error, sender); return; } string spawnType = commandParams[0].ToLower(); if (GM.Spawner.Spawn(spawnType)) { - GM.Server.SendMessage(string.Format("Spawned a {0}", spawnType), "0f0f0f", sender); + GM.Server.SendMessage(string.Format("Spawned a {0}", spawnType), MessageColour.Information, sender); } else { - GM.Server.SendMessage(string.Format("Cannot spawn a {0}", spawnType), "0f0f0f", sender); + GM.Server.SendMessage(string.Format("Cannot spawn a {0}", spawnType), MessageColour.Information, sender); } }); @@ -63,7 +64,7 @@ public override void OnInit() return; } - GM.Server.SendMessage(string.Format("Spawnable: {0}", string.Join(", ", ActorSpawner.Spawnable)), "0f0f0f", sender); + GM.Server.SendMessage(string.Format("Spawnable: {0}", string.Join(", ", ActorSpawner.Spawnable)), MessageColour.Information, sender); }); GM.Chat.ListenFor("kick", "Kick a player by providing their SteamID", (sender, commandParams) => @@ -75,14 +76,14 @@ public override void OnInit() if (commandParams.Length < 1) { - GM.Server.SendMessage("Invalid kick command, not enough parameters", steamId: sender); + GM.Server.SendMessage("Invalid kick command, not enough parameters", MessageColour.Error, sender); return; } bool didParseSteamId = ulong.TryParse(commandParams[0], out var steamId); if (!didParseSteamId) { - GM.Server.SendMessage("Invalid SteamID, could not be parsed", steamId: sender); + GM.Server.SendMessage("Invalid SteamID, could not be parsed", MessageColour.Error, sender); return; } @@ -98,18 +99,18 @@ public override void OnInit() if (commandParams.Length < 2) { - GM.Server.SendMessage("Invalid say command, not enough parameters", steamId: sender); + GM.Server.SendMessage("Invalid say command, not enough parameters", MessageColour.Error, sender); return; } bool didParseSteamId = ulong.TryParse(commandParams[0], out var steamId); if (!didParseSteamId) { - GM.Server.SendMessage("Invalid SteamID, could not be parsed", steamId: sender); + GM.Server.SendMessage("Invalid SteamID, could not be parsed", MessageColour.Error, sender); return; } - GM.Server.SendMessage(string.Format("ADMIN: {0}", string.Join(" ", commandParams.Skip(1).ToArray())), "ff0000", steamId); + GM.Server.SendMessage(string.Format("ADMIN: {0}", string.Join(" ", commandParams.Skip(1).ToArray())), MessageColour.Warning, steamId); }); GM.Chat.ListenFor("say.all", "Send all players a message", (sender, commandParams) => @@ -121,11 +122,11 @@ public override void OnInit() if (commandParams.Length < 1) { - GM.Server.SendMessage("Invalid say.all command, not enough parameters", steamId: sender); + GM.Server.SendMessage("Invalid say.all command, not enough parameters", MessageColour.Error, sender); return; } - GM.Server.SendMessage(string.Format("ADMIN: {0}", string.Join(" ", commandParams)), "ff0000"); + GM.Server.SendMessage(string.Format("ADMIN: {0}", string.Join(" ", commandParams)), MessageColour.Warning); }); GM.Chat.ListenFor("plugins", "Show all the plugins loaded", (sender, commandParams) => @@ -135,14 +136,14 @@ public override void OnInit() return; } - GM.Server.SendMessage("-- Plugins --", "0f0f0f", sender); + GM.Server.SendMessage("-- Plugins --", MessageColour.Information, sender); foreach (var plugin in PluginLoader.Plugins) { - GM.Server.SendMessage(string.Format("- {0}:{1} by {2}", plugin.Name, plugin.Version, plugin.Author), "0f0f0f", sender); + GM.Server.SendMessage(string.Format("- {0}:{1} by {2}", plugin.Name, plugin.Version, plugin.Author), MessageColour.Information, sender); } - GM.Server.SendMessage("----", "0f0f0f", sender); + GM.Server.SendMessage("----", MessageColour.Information, sender); }); }