async Task <Slot> IHandle <AskCollectionResult, Slot> .Handle(AskCollectionResult message) { var after = await GetInventoryWindow().DistributeStack(AttachedObject, message.Slot); if (after.ItemCount != message.Slot.ItemCount) { await AttachedObject.GetComponent <ChunkEventBroadcastComponent>().GetGenerator() .CollectItem(await message.Source.GetEntityId(), AttachedObject.EntityId, (uint)message.Slot.ItemCount - after.ItemCount); } return(after); }
async Task <Slot> IHandle <AskCollectionResult, Slot> .Handle(AskCollectionResult message) { var slot = message.Slot; if (slot.CanStack(PickupMetadata.Item)) { var maxStack = ItemHandler.Create((uint)slot.BlockId).MaxStackCount; var toStack = Math.Min(maxStack, slot.ItemCount + PickupMetadata.Item.ItemCount) - PickupMetadata.Item.ItemCount; if (toStack > 0) { await UpdateItem(PickupMetadata.Item.AddItemCount(toStack)); slot.ItemCount -= (byte)toStack; slot.MakeEmptyIfZero(); } } return(slot); }