2023-05-25 19:20:03 +02:00
|
|
|
package com.craftaro.ultimatestacker.listeners.item;
|
2020-07-11 04:42:56 +02:00
|
|
|
|
2023-05-30 11:20:31 +02:00
|
|
|
import com.craftaro.ultimatestacker.api.UltimateStackerAPI;
|
|
|
|
import com.craftaro.ultimatestacker.api.stack.item.StackedItem;
|
2023-05-25 19:20:03 +02:00
|
|
|
import com.craftaro.ultimatestacker.settings.Settings;
|
|
|
|
import com.craftaro.ultimatestacker.utils.Methods;
|
2023-06-11 13:14:56 +02:00
|
|
|
import com.craftaro.core.compatibility.CompatibleSound;
|
2020-07-11 04:42:56 +02:00
|
|
|
import org.bukkit.entity.Arrow;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.Listener;
|
|
|
|
import org.bukkit.event.entity.EntityPickupItemEvent;
|
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
|
|
|
|
public class ItemCurrentListener implements Listener {
|
2020-09-01 20:54:43 +02:00
|
|
|
|
2023-05-05 10:57:17 +02:00
|
|
|
@EventHandler
|
2020-07-11 04:42:56 +02:00
|
|
|
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
|
|
|
|
|
2023-05-30 11:20:31 +02:00
|
|
|
StackedItem stackedItem = UltimateStackerAPI.getStackedItemManager().getStackedItem(event.getItem());
|
|
|
|
if (stackedItem == null) return;
|
|
|
|
ItemStack stack = stackedItem.getItem().getItemStack();
|
|
|
|
int amount = stackedItem.getAmount();
|
2020-07-11 04:42:56 +02:00
|
|
|
|
|
|
|
if (event.getEntity() instanceof Player) {
|
|
|
|
if (amount < (stack.getMaxStackSize() / 2)) return;
|
|
|
|
event.setCancelled(true);
|
|
|
|
Player player = (Player) event.getEntity();
|
|
|
|
player.playSound(player.getLocation(), CompatibleSound.ENTITY_ITEM_PICKUP.getSound(), .2f, (float) (1 + Math.random()));
|
|
|
|
Methods.updateInventory(event.getItem(), player.getInventory());
|
|
|
|
} else {
|
2023-05-30 11:20:31 +02:00
|
|
|
stackedItem.setAmount(amount - 1);
|
2020-07-11 04:42:56 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|