diff --git a/Essentials/src/main/java/com/earth2me/essentials/Kit.java b/Essentials/src/main/java/com/earth2me/essentials/Kit.java index 0a499f4e6..a4b0e4a43 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Kit.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Kit.java @@ -10,6 +10,7 @@ import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.NumberUtil; import net.ess3.api.IEssentials; import net.ess3.api.events.KitClaimEvent; +import net.essentialsx.api.v2.events.KitPreExpandItemsEvent; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; @@ -219,7 +220,11 @@ public class Kit { final int maxStackSize = user.isAuthorized("essentials.oversizedstacks") ? ess.getSettings().getOversizedStackSize() : 0; final boolean isDropItemsIfFull = ess.getSettings().isDropItemsIfFull(); + final KitPreExpandItemsEvent itemsEvent = new KitPreExpandItemsEvent(user, kitName, itemList); + Bukkit.getPluginManager().callEvent(itemsEvent); + final ItemStack[] itemArray = itemList.toArray(new ItemStack[0]); + if (!isDropItemsIfFull && !Inventories.hasSpace(user.getBase(), maxStackSize, autoEquip, itemArray)) { user.sendMessage(tl("kitInvFullNoDrop")); return false; diff --git a/Essentials/src/main/java/net/essentialsx/api/v2/events/KitPreExpandItemsEvent.java b/Essentials/src/main/java/net/essentialsx/api/v2/events/KitPreExpandItemsEvent.java new file mode 100644 index 000000000..ff8fcc7fd --- /dev/null +++ b/Essentials/src/main/java/net/essentialsx/api/v2/events/KitPreExpandItemsEvent.java @@ -0,0 +1,62 @@ +package net.essentialsx.api.v2.events; + +import net.ess3.api.IUser; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +/** + * Called when items from a kit are about to be given to a {@link IUser user}. + *

+ * This event is not cancellable and is called right before items are about to be received by the {@link #getUser() user}. + * If you want to prevent kits from being claimed to begin with, use the {@link net.ess3.api.events.KitClaimEvent} + * @see net.ess3.api.events.KitClaimEvent + */ +public class KitPreExpandItemsEvent extends Event { + private static final HandlerList handlers = new HandlerList(); + + private final IUser user; + private final String kitName; + private final List itemStacks; + + public KitPreExpandItemsEvent(IUser user, String kitName, List itemStacks) { + this.user = user; + this.kitName = kitName; + this.itemStacks = itemStacks; + } + + /** + * Gets the {@link IUser user} who is receiving the kit. + * @return the user. + */ + public IUser getUser() { + return user; + } + + /** + * Gets the name of the kit the {@link IUser user} is receiving. + * @return the name of the kit. + */ + public String getKitName() { + return kitName; + } + + /** + * Returns a mutable list with items to be received by the {@link IUser user}. + * @return the list of items. + */ + public List getItemStacks() { + return itemStacks; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +}