diff --git a/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionQualityCrops.java b/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionQualityCrops.java index 0bd88fcc..2298a4b6 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionQualityCrops.java +++ b/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionQualityCrops.java @@ -39,6 +39,7 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.List; import java.util.Optional; import static java.util.Objects.requireNonNull; @@ -77,14 +78,20 @@ protected void triggerAction(Context context) { if (context.holder() instanceof Player p) { player = p; } - generateItem(location, player, random); + for (ItemStack itemStack : generateItem(location, player, random)) { + if (toInv && player != null) { + PlayerUtils.giveItem(player, itemStack, itemStack.getAmount()); + } else { + location.getWorld().dropItemNaturally(location, itemStack); + } + } } - public void generateItem(Location location, @Nullable Player player, int randomAmount) { + public List generateItem(Location location, @Nullable Player player, int randomAmount) { double[] ratio = ConfigManager.defaultQualityRatio(); Optional> world = plugin.getWorldManager().getWorld(location.getWorld()); if (world.isEmpty()) { - return; + return List.of(); } Pos3 pos3 = Pos3.from(location); Fertilizer[] fertilizers = null; @@ -111,22 +118,20 @@ public void generateItem(Location location, @Nullable Player player, int randomA ratio = newRatio; } } + ArrayList droppedItems = new ArrayList<>(); outer: - for (int i = 0; i < randomAmount; i++) { - double r1 = Math.random(); - for (int j = 0; j < ratio.length; j++) { - if (r1 < ratio[j]) { - ItemStack drop = plugin.getItemManager().build(player, qualityLoots[j]); - if (drop == null || drop.getType() == Material.AIR) continue; - if (toInv && player != null) { - PlayerUtils.giveItem(player, drop, 1); - } else { - location.getWorld().dropItemNaturally(location, drop); - } - continue outer; - } + for (int i = 0; i < randomAmount; i++) { + double r1 = Math.random(); + for (int j = 0; j < ratio.length; j++) { + if (r1 < ratio[j]) { + ItemStack drop = plugin.getItemManager().build(player, qualityLoots[j]); + if (drop == null || drop.getType() == Material.AIR) continue; + droppedItems.add(drop); + continue outer; } } + } + return droppedItems; } public MathValue min() {