Beispiel #1
0
        public bool CanBeInput(Item item)
        {
            int stack = item.stack;

            int[] inputSlots = GetInputSlots();

            foreach (int slot in inputSlots)
            {
                Item slotItem;
                if ((ParentState?.GetSlot(slot).ValidItemFunc(item) ?? false) || CanInputItem(slot, item))
                {
                    slotItem = this.RetrieveItem(slot);

                    if (slotItem.IsAir)
                    {
                        return(true);
                    }
                    else if (slotItem.type == item.type)
                    {
                        if (slotItem.stack + stack <= slotItem.maxStack)
                        {
                            return(true);
                        }
                        else
                        {
                            stack -= slotItem.maxStack - slotItem.stack;
                        }
                    }
                }
            }

            return(stack <= 0);
        }
Beispiel #2
0
        //NOTE: ModTileEntity.PreGlobalUpdate() is called from a singleton for some f*****g reason

        public void SaveSlots()
        {
            slots.Clear();

            for (int i = 0; i < ParentState.SlotsLength; i++)
            {
                int type  = ParentState.GetSlot(i).StoredItem.type;
                int stack = ParentState.GetSlot(i).StoredItem.stack;

                Item item = new Item();
                item.SetDefaults(type);
                item.stack = stack;

                slots.Add(item);
            }
        }