private void OnItemCraft(ItemCrafterStartEvent craftEvent)
        {
            #region Checks
            if (craftEvent == null)
            {
                return;
            }
            if (craftEvent.Cancelled)
            {
                return;
            }
            if (craftEvent.Entity == null)
            {
                return;
            }
            #endregion

            var amount = craftEvent.Crafter.QuantityEstimated;
            var name   = craftEvent.Crafter.Product.Name;
            if (name.EqualsIgnoreCase("Charcoal") && amount > 1000000)
            {
                return;
            }
            var time     = craftEvent.Crafter.Duration;
            var security = craftEvent.Entity.TryGet <ISecurable>();
            if (security == null)
            {
                if (!craftEvent.Entity.IsPlayer)
                {
                    return;
                }
                var player = craftEvent.Entity.Owner;
                PlayerCraftingData data;
                if (!Data.PlayerCraftingData.TryGetValue(player.Id, out data))
                {
                    data = new PlayerCraftingData();
                    Data.Add(craftEvent.Entity.OwnerId, data);
                }

                data.SetCrafting(player.Id, amount, name, time);
            }
            else
            {
                var objectGUID = security.ObjectGUID;
                StationCraftingData data;
                if (!Data.StationCraftingData.TryGetValue(objectGUID, out data))
                {
                    data = new StationCraftingData(craftEvent.Entity.name);
                    Data.Add(objectGUID, data);
                }

                data.SetCrafting(amount, name, time);
            }

            SaveData();
        }
        private void OnPlayerInteract(InteractEvent interactEvent)
        {
            #region Checks
            if (interactEvent == null)
            {
                return;
            }
            if (interactEvent.Cancelled)
            {
                return;
            }
            if (interactEvent.Entity == null)
            {
                return;
            }
            if (interactEvent.ControllerEntity == null)
            {
                return;
            }
            if (!interactEvent.ControllerEntity.IsPlayer)
            {
                return;
            }
            #endregion

            var player   = interactEvent.ControllerEntity.Owner;
            var security = interactEvent.Entity.TryGet <ISecurable>();
            if (security == null)
            {
                return;
            }
            var objectGUID = security.ObjectGUID;

            StationCraftingData data;
            if (!Data.StationCraftingData.TryGetValue(objectGUID, out data))
            {
                data = new StationCraftingData(interactEvent.Entity.name);
                Data.Add(objectGUID, data);
            }

            data.SetInteraction(player.Id);

            SaveData();
        }
 public void Add(uint objectGUID, StationCraftingData data)
 {
     StationCraftingData.Add(objectGUID, data);
 }