private void ExecScript(object state)
        {
            if (!(state is IScriptRootData data))
            {
                return;
            }

            try
            {
                if (data.E.EntityType == EntityType.Proxy)
                {
                    WaitForExec.TryRemove(data.ScriptId, out _);
                    return;
                }

                if (!ScriptRunInfo.TryGetValue(data.ScriptId, out var info))
                {
                    info = new ScriptInfo();
                }

                info.LastStart = DateTime.Now;
                info.Count++;

                Interlocked.Increment(ref info.RunningInstances);
                processScript(data);
                Interlocked.Decrement(ref info.RunningInstances);

                lock (ExecQueue) WaitForExec.TryRemove(data.ScriptId, out _);

                info.ExecTime += DateTime.Now - info.LastStart;

                ScriptRunInfo.AddOrUpdate(data.ScriptId, info, (id, i) => info);

                Interlocked.Increment(ref _MainCount);
                if (MainCount > ScriptsCount)
                {
                    if (Interlocked.Exchange(ref _MainCount, 0) > 0 && (DateTime.Now - LastIterationUpdate).TotalSeconds >= 1)
                    {
                        LastIterationUpdate = DateTime.Now;
                        Interlocked.Increment(ref _Iteration);
                    }
                }
            }
            catch (Exception error)
            {
                Log($"EmpyrionScripting Mod: ExecNext {data.ScriptId} => {error}", LogLevel.Debug);
            }
        }
        public void Clear()
        {
            try                     { ScriptRunInfo = new ConcurrentDictionary <string, ScriptInfo>(ScriptRunInfo.Where(S => S.Value.RunningInstances > 0).ToArray()); }
            catch (Exception error) { ScriptRunInfo.Clear(); Log($"EmpyrionScripting Mod: Clear => {error}", LogLevel.Error); }

            WaitForExec.Clear();
            ExecQueue = new ConcurrentQueue <IScriptRootData>();
        }