Fix InventoryAction wrong for Bundles (#11902)

This commit is contained in:
Tamion
2025-01-11 19:50:24 +01:00
committed by GitHub
parent 79ffcd1536
commit 19ddbeff9e
4 changed files with 87 additions and 4 deletions

View File

@@ -0,0 +1,30 @@
--- 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;
@@ -171,7 +_,13 @@
}
public int getMaxAmountToAdd(ItemStack stack) {
- Fraction fraction = Fraction.ONE.subtract(this.weight);
+ // 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);
}