Files
TerrariaPluginTemplate/ConfigPlugin/ConfigPlugin.cs
2025-08-15 22:36:59 -04:00

68 lines
1.9 KiB
C#

using Terraria;
using TShockAPI;
using TerrariaApi.Server;
using TShockAPI.Hooks;
namespace ConfigPlugin
{
[ApiVersion(2, 1)]
public class ConfigPlugin(Main game) : TerrariaPlugin(game)
{
public override string Author => "wymiller";
public override string Description => "A plugin that takes some configuration";
public override string Name => "Configuration Plugin";
public override Version Version => new Version(1, 0, 0, 0);
// instantiate our config class
public static readonly string ConfigPath = Path.Combine(TShock.SavePath, "ConfigPlugin.json");
private Config? _config = new Config();
public override void Initialize()
{
GeneralHooks.ReloadEvent += OnReload;
ServerApi.Hooks.NetGreetPlayer.Register(this, OnJoin);
PerformConfigOperations();
Console.WriteLine("[ConfigPlugin] Plugin is loading...");
}
private void OnReload(ReloadEventArgs args)
{
PerformConfigOperations();
}
private void OnJoin(GreetPlayerEventArgs args)
{
TSPlayer player = TShock.Players[args.Who];
player.SendInfoMessage($"{player} has arrived!");
if (player.Name == _config?.Player)
{
player.SendInfoMessage(_config.CustomMessage);
}
}
private void PerformConfigOperations()
{
if (File.Exists(ConfigPath))
{
_config = Config.Read();
}
else
{
_config?.Write();
}
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
Console.WriteLine("[ConfigPlugin] Plugin is unloading...");
}
base.Dispose(disposing);
}
}
}