generated from AriasCreations/vsmodtemplate
Add spawn related commands and data storage system
This commit is contained in:
parent
f2a23552af
commit
0f318a9efa
7 changed files with 211 additions and 9 deletions
|
@ -1,13 +1,20 @@
|
|||
using Vintagestory.API.Client;
|
||||
using System;
|
||||
using System.IO;
|
||||
using Vintagestory.API.Client;
|
||||
using Vintagestory.API.Common;
|
||||
using Vintagestory.API.Common.Entities;
|
||||
using Vintagestory.API.Config;
|
||||
using Vintagestory.API.Server;
|
||||
using Vintagestory.GameContent;
|
||||
|
||||
namespace ServerUtilities
|
||||
namespace AriasServerUtils
|
||||
{
|
||||
public class ServerUtilities : ModSystem
|
||||
{
|
||||
public static string MOD_ID = "ariasserverutils";
|
||||
public static ASUModConfig config = new ASUModConfig();
|
||||
private static ICoreServerAPI API;
|
||||
private static bool bDirty = false;
|
||||
|
||||
/// <summary>
|
||||
/// Method to register all mod blocks
|
||||
|
@ -35,16 +42,90 @@ namespace ServerUtilities
|
|||
RegisterBlocks(api);
|
||||
RegisterBlockEntities(api);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public override void StartServerSide(ICoreServerAPI api)
|
||||
{
|
||||
API = api;
|
||||
api.Logger.Notification(Lang.Get($"{MOD_ID}:start"));
|
||||
|
||||
api.Event.ServerRunPhase(EnumServerRunPhase.GameReady, OnGameReady);
|
||||
api.Event.ServerRunPhase(EnumServerRunPhase.Shutdown, OnShutdown);
|
||||
api.Event.Timer(OnCheckModDirty, 20);
|
||||
|
||||
api.ChatCommands.Create("setspawn").RequiresPrivilege(Privilege.controlserver).HandleWith(Events.HandleSetSpawn);
|
||||
api.ChatCommands.Create("spawn").RequiresPrivilege(Privilege.chat).HandleWith(Events.HandleSpawn);
|
||||
api.ChatCommands.Create("delspawn").RequiresPrivilege(Privilege.controlserver).HandleWith(Events.HandleClearSpawn);
|
||||
}
|
||||
|
||||
private void OnCheckModDirty()
|
||||
{
|
||||
if (bDirty)
|
||||
{
|
||||
//API.Logger.Notification(Lang.Get($"{MOD_ID}:timer"));
|
||||
bDirty = false;
|
||||
SaveGlobalConfig();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnShutdown()
|
||||
{
|
||||
// Mod Shutdown //
|
||||
// Handle any remaining tasks before shutdown
|
||||
OnCheckModDirty();
|
||||
}
|
||||
|
||||
public void SaveGlobalConfig()
|
||||
{
|
||||
API.StoreModConfig<ASUModConfig>(config, GetConfigurationFile("", ModConfigType.Global));
|
||||
}
|
||||
|
||||
private void OnGameReady()
|
||||
{
|
||||
// Mod Setup Info //
|
||||
// -> Step 1. Load Mod Global Config <-
|
||||
|
||||
config = API.LoadModConfig<ASUModConfig>(GetConfigurationFile("", ModConfigType.Global));
|
||||
if (config == null) config = new ASUModConfig();
|
||||
}
|
||||
|
||||
public string GetConfigurationFile(string sName, ModConfigType type)
|
||||
{
|
||||
if (type == ModConfigType.Global)
|
||||
{
|
||||
return "ariaserverconfig/global.json";
|
||||
}
|
||||
else if (type == ModConfigType.World)
|
||||
{
|
||||
return $"ariaserverconfig/{GetWorldName()}/{sName}.json";
|
||||
}
|
||||
else return $"ariaserverconfig/global.json";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This function is used to mark the mod's global config, and all loaded player configs as dirty. They will be flushed to disk, then the dirty flag will be cleared.
|
||||
/// </summary>
|
||||
public static void MarkDirty()
|
||||
{
|
||||
bDirty = true;
|
||||
}
|
||||
|
||||
public string GetWorldName()
|
||||
{
|
||||
string[] lName = API.WorldManager.CurrentWorldName.Split(Path.DirectorySeparatorChar);
|
||||
string sName = lName[lName.Length - 1];
|
||||
return sName.Substring(0, sName.Length - 6);
|
||||
}
|
||||
|
||||
public override void StartClientSide(ICoreClientAPI api)
|
||||
{
|
||||
api.Logger.Notification(Lang.Get($"{MOD_ID}:start"));
|
||||
}
|
||||
|
||||
public static void SendMessageTo(IServerPlayer player, string sMsg)
|
||||
{
|
||||
player.SendMessage(0, sMsg, EnumChatType.CommandSuccess);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue