--- a/net/minecraft/world/item/component/BundleContents.java
+++ b/net/minecraft/world/item/component/BundleContents.java
@@ -76,6 +_,12 @@
         return !stack.isEmpty() && stack.getItem().canFitInsideContainerItems();
     }
 
+    // Paper start - correct bundle inventory action
+    public int getMaxAmountToAdd(final ItemStack stack) {
+        return Mutable.getMaxAmountToAdd(stack, this.weight);
+    }
+    // Paper end - correct bundle inventory action
+
     public int getNumberOfItemsToShow() {
         int size = this.size();
         int i = size > 12 ? 11 : 12;
@@ -170,8 +_,14 @@
             }
         }
 
-        private int getMaxAmountToAdd(ItemStack stack) {
-            Fraction fraction = Fraction.ONE.subtract(this.weight);
+        public int getMaxAmountToAdd(ItemStack stack) {
+        // Paper start - correct bundle inventory action
+        // Static overload to easily compute this value without the need for an instance of mutable.
+            return getMaxAmountToAdd(stack, this.weight);
+        }
+        static int getMaxAmountToAdd(final ItemStack stack, final Fraction weight) {
+            Fraction fraction = Fraction.ONE.subtract(weight);
+        // Paper end - correct bundle inventory action
             return Math.max(fraction.divideBy(BundleContents.getWeight(stack)).intValue(), 0);
         }
 
