Initial commit: AetherBags + KamiToolKit for FC Gitea
Debug Build and Test / Build against Latest Dalamud (push) Has been cancelled
Debug Build and Test / Build against Staging Dalamud (push) Has been cancelled

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-02-08 14:46:31 -05:00
commit 8db4ce6094
375 changed files with 34124 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
using System;
using System.Collections.Concurrent;
using Dalamud.Plugin;
using KamiToolKit.Classes;
using Serilog.Events;
namespace KamiToolKit;
public static class KamiToolKitLibrary {
internal static bool IsInitialized { get; private set; }
internal static ConcurrentDictionary<nint, Type>? AllocatedNodes;
internal static string? DefaultWindowSubtitle;
/// <summary>
/// Main initialization method for KamiToolKit. This method is required to be invoked before any KamiToolKit features are used.
/// Failure to do so will not result in any direct warnings, but will result in undefined behavior.
/// </summary>
public static void Initialize(IDalamudPluginInterface pluginInterface, string? defaultWindowSubtitle = null) {
IsInitialized = true;
DefaultWindowSubtitle = defaultWindowSubtitle;
// Inject non-Experimental Properties
pluginInterface.Inject(DalamudInterface.Instance);
DalamudInterface.Instance.GameInteropProvider.InitializeFromAttributes(DalamudInterface.Instance);
// Create node data share
AllocatedNodes = DalamudInterface.Instance.PluginInterface.GetOrCreateData("KamiToolKitAllocatedNodes", () => new ConcurrentDictionary<nint, Type>());
// Inject Experimental Properties
pluginInterface.Inject(Experimental.Instance);
DalamudInterface.Instance.GameInteropProvider.InitializeFromAttributes(Experimental.Instance);
Experimental.Instance.EnableHooks();
// Force enable Verbose so that users are able to get advanced logging information on request.
DalamudInterface.Instance.Log.MinimumLogLevel = LogEventLevel.Verbose;
DalamudInterface.Instance.Log.Info($"KamiToolKit initialized for {pluginInterface.InternalName}");
}
/// <summary>
/// Alias for Cleanup
/// </summary>
public static void Dispose() => Cleanup();
/// <summary>
/// Alias for Cleanup
/// </summary>
public static void Shutdown() => Cleanup();
/// <summary>
/// Cleans up any potentially leaked resources that KamiToolKit has allocated.
/// </summary>
public static void Cleanup() {
if (MainThreadSafety.TryAssertMainThread()) return;
NodeBase.DisposeNodes();
NativeAddon.DisposeAddons();
DalamudInterface.Instance.PluginInterface.RelinquishData("KamiToolKitAllocatedNodes");
Experimental.Instance.DisposeHooks();
}
}