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); }
//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); } }