use of net.kodehawa.mantarobot.commands.currency.item.special.tools.Pickaxe in project MantaroBot by Mantaro.
the class ItemHelper method openLootBox.
private static void openLootBox(Context ctx, Player player, SeasonPlayer seasonPlayer, ItemType.LootboxType type, Item crate, EmoteReference typeEmote, int bound, boolean seasonal) {
List<Item> toAdd = selectItems(random.nextInt(bound) + bound, type);
ArrayList<ItemStack> ita = new ArrayList<>();
toAdd.forEach(item -> ita.add(new ItemStack(item, 1)));
PlayerData data = player.getData();
if ((type == ItemType.LootboxType.MINE || type == ItemType.LootboxType.MINE_PREMIUM) && toAdd.contains(ItemReference.SPARKLE_PICKAXE)) {
data.addBadgeIfAbsent(Badge.DESTINY_REACHES);
}
if ((type == ItemType.LootboxType.FISH || type == ItemType.LootboxType.FISH_PREMIUM) && toAdd.contains(ItemReference.SHARK)) {
data.addBadgeIfAbsent(Badge.TOO_BIG);
}
var toShow = ItemStack.reduce(ita);
// Tools must only drop one, if any.
toShow = toShow.stream().map(stack -> {
var item = stack.getItem();
if (stack.getAmount() > 1 && ((item instanceof Pickaxe) || (item instanceof FishRod) || (item instanceof Axe))) {
return new ItemStack(item, 1);
}
return stack;
}).collect(Collectors.toList());
boolean overflow = seasonal ? seasonPlayer.getInventory().merge(toShow) : player.getInventory().merge(toShow);
if (seasonal) {
seasonPlayer.getInventory().process(new ItemStack(ItemReference.LOOT_CRATE_KEY, -1));
seasonPlayer.getInventory().process(new ItemStack(crate, -1));
} else {
player.getInventory().process(new ItemStack(ItemReference.LOOT_CRATE_KEY, -1));
player.getInventory().process(new ItemStack(crate, -1));
}
data.setCratesOpened(data.getCratesOpened() + 1);
player.save();
if (seasonal) {
seasonPlayer.save();
}
I18nContext lang = ctx.getLanguageContext();
var show = toShow.stream().map(itemStack -> "x%,d \u2009%s".formatted(itemStack.getAmount(), itemStack.getItem().toDisplayString())).collect(Collectors.joining(", "));
var extra = "";
if (overflow) {
extra = ". " + lang.get("general.misc_item_usage.crate.overflow");
}
var high = toShow.stream().filter(stack -> stack.getItem() instanceof Tiered).filter(stack -> ((Tiered) stack.getItem()).getTier() >= 4).map(stack -> "%s \u2009(%d \u2b50)".formatted(stack.getItem().getEmoji(), ((Tiered) stack.getItem()).getTier())).collect(Collectors.joining(", "));
if (high.length() >= 1) {
extra = ".\n\n" + lang.get("general.misc_item_usage.crate.success_high").formatted(EmoteReference.POPPER, high);
}
ctx.sendFormat(lang.get("general.misc_item_usage.crate.success"), typeEmote.getDiscordNotation() + " ", show, extra);
}
Aggregations