示例#1
0
        private void OnSlotModified(string playerID, ItemSlot activeHotbarSlot, int index)
        {
            Console.WriteLine("OnSlotModified");
            FancyTools       mod = api.ModLoader.GetModSystem <FancyTools>();
            SeedBagInventory inventory;

            mod.seedBagInventories.TryGetValue(playerID, out inventory);
            if (!(inventory is null))
            {
                inventory.SyncToSeedBag();
            }
        }
示例#2
0
        private void OnCloseInventory(IPlayer player)
        {
            Console.WriteLine("OnCloseInventory");
            FancyTools       mod = api.ModLoader.GetModSystem <FancyTools>();
            SeedBagInventory inventory;

            mod.seedBagInventories.TryGetValue(player.PlayerUID, out inventory);
            if (!(inventory is null))
            {
                inventory.SyncToSeedBag();
                mod.seedBagInventories.Remove(player.PlayerUID);
            }
        }
示例#3
0
        private void OpenSeedBagGui(ItemSlot slot, EntityAgent byEntity)
        {
            SeedBagInventory inventory = CreateInventory(api, slot);

            inventory.OnInventoryClosed += OnCloseInventory;
            IPlayer player = (byEntity as EntityPlayer).Player;

            FancyTools mod = api.ModLoader.GetModSystem <FancyTools>();

            mod.seedBagInventories.Add(player.PlayerUID, inventory);
            inventory.SlotModified += index => OnSlotModified(player.PlayerUID, player.InventoryManager.ActiveHotbarSlot, index);

            player.InventoryManager.OpenInventory(inventory);

            if (byEntity.World is IClientWorldAccessor)
            {
                GuiSeedBag guiSeedBag = new GuiSeedBag(api as ICoreClientAPI, inventory, slot);
                guiSeedBag.TryOpen();
            }
        }