fix: dupe bug with controller

Remainders weren't being accounted for when inserting to player inv.

Fixes #3544
This commit is contained in:
raoulvdberge
2023-11-05 15:24:13 +01:00
parent 456e5bdc93
commit 3e54914fa2

View File

@@ -23,6 +23,9 @@ import net.minecraft.world.item.crafting.CraftingRecipe;
import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.event.ForgeEventFactory;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.items.wrapper.InvWrapper;
import net.minecraftforge.items.wrapper.PlayerInvWrapper;
import net.minecraftforge.items.wrapper.PlayerMainInvWrapper;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.*; import java.util.*;
@@ -123,16 +126,18 @@ public class CraftingGridBehavior implements ICraftingGridBehavior {
} }
for (ItemStack craftedItem : craftedItemsList) { for (ItemStack craftedItem : craftedItemsList) {
if (!player.getInventory().add(craftedItem.copy())) { ItemStack remainder = ItemHandlerHelper.insertItem(
ItemStack remainder = craftedItem; new PlayerMainInvWrapper(player.getInventory()),
craftedItem.copy(),
false
);
if (useNetwork) { if (!remainder.isEmpty() && useNetwork) {
remainder = network.insertItem(craftedItem, craftedItem.getCount(), Action.PERFORM); remainder = network.insertItem(remainder, remainder.getCount(), Action.PERFORM);
} }
if (!remainder.isEmpty()) { if (!remainder.isEmpty()) {
Containers.dropItemStack(player.getCommandSenderWorld(), player.getX(), player.getY(), player.getZ(), remainder); Containers.dropItemStack(player.getCommandSenderWorld(), player.getX(), player.getY(), player.getZ(), remainder);
}
} }
} }