UltimateStacker/UltimateStacker-Plugin/src/main/java/com.craftaro.ultimatestacker/listeners/item/ItemCurrentListener.java

39 lines
1.8 KiB
Java

package com.craftaro.ultimatestacker.listeners.item;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
import com.craftaro.ultimatestacker.api.UltimateStackerApi;
import com.craftaro.ultimatestacker.api.stack.item.StackedItem;
import com.craftaro.ultimatestacker.settings.Settings;
import com.craftaro.ultimatestacker.utils.Methods;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.inventory.ItemStack;
public class ItemCurrentListener implements Listener {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onPickup(EntityPickupItemEvent event) {
if (!Settings.STACK_ITEMS.getBoolean() || event.getItem() instanceof Arrow) return;
// Amount here is not the total amount of item (32 if more than 32) but the amount of item the player can retrieve
// ie there is x64 diamonds blocks (so 32), the player pick 8 items so the amount is 8 and not 32
StackedItem stackedItem = UltimateStackerApi.getStackedItemManager().getStackedItem(event.getItem());
ItemStack stack = stackedItem.getItem().getItemStack();
int amount = stackedItem.getAmount();
if (event.getEntity() instanceof Player) {
if (amount < (stack.getMaxStackSize() / 2)) return;
event.setCancelled(true);
Player player = (Player) event.getEntity();
XSound.ENTITY_ITEM_PICKUP.play(player, .2f, (float) (1 + Math.random()));
Methods.updateInventory(event.getItem(), player.getInventory());
} else {
stackedItem.setAmount(amount - 1);
}
}
}