mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-01-03 06:37:47 +01:00
Reworked the backend on how consumables are consumed to allow more reliable API.
Added `ConsumableConsumedEvent` to intercept a consumable being consumed, and ItemStats may now implement `SelfConsumable` to run a method when the food item is being eaten by a player.
This commit is contained in:
parent
4c14423b0f
commit
736182a2f0
@ -0,0 +1,78 @@
|
||||
package net.Indyuce.mmoitems.api.event.item;
|
||||
|
||||
import net.Indyuce.mmoitems.api.interaction.Consumable;
|
||||
import net.Indyuce.mmoitems.api.item.mmoitem.VolatileMMOItem;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* When a player eats a {@link net.Indyuce.mmoitems.stat.type.SelfConsumable}
|
||||
*
|
||||
* @author Gunging
|
||||
*/
|
||||
public class ConsumableConsumedEvent extends Event implements Cancellable {
|
||||
|
||||
@NotNull final VolatileMMOItem mmoitem;
|
||||
|
||||
@NotNull
|
||||
public VolatileMMOItem getMMOItem() {
|
||||
return mmoitem;
|
||||
}
|
||||
|
||||
@NotNull final Player player;
|
||||
@NotNull
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
}
|
||||
@NotNull final Consumable useItem;
|
||||
@NotNull
|
||||
public Consumable getUseItem() {
|
||||
return useItem;
|
||||
}
|
||||
|
||||
|
||||
boolean cancelled = false;
|
||||
|
||||
|
||||
/**
|
||||
* @return If the consumable will be consumed.
|
||||
* <br>
|
||||
* <code>null</code> is the default, and means that it will be consumed if it successfully
|
||||
* performs any {@link net.Indyuce.mmoitems.stat.type.SelfConsumable#onSelfConsume(VolatileMMOItem, Player)},
|
||||
* any other value will override this and allows you to consume consumables that did no action, or
|
||||
* prevent consumables from being consumed even though they executed actions.
|
||||
*/
|
||||
@Nullable public Boolean isConsume() {
|
||||
return consume;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param consume If the consumable will be consumed.
|
||||
* <br>
|
||||
* <code>null</code> is the default, and means that it will be consumed if it successfully
|
||||
* performs any {@link net.Indyuce.mmoitems.stat.type.SelfConsumable#onSelfConsume(VolatileMMOItem, Player)},
|
||||
* any other value will override this and allows you to consume consumables that did no action, or
|
||||
* prevent consumables from being consumed even though they executed actions.
|
||||
*/
|
||||
public void setConsume(@Nullable Boolean consume) {
|
||||
this.consume = consume;
|
||||
}
|
||||
|
||||
@Nullable Boolean consume = null;
|
||||
|
||||
public ConsumableConsumedEvent(@NotNull VolatileMMOItem mmo, @NotNull Player player, @NotNull Consumable useItem) {
|
||||
this.mmoitem = mmo;
|
||||
this.player = player;
|
||||
this.useItem = useItem;
|
||||
}
|
||||
|
||||
@Override public boolean isCancelled() { return cancelled; }
|
||||
@Override public void setCancelled(boolean b) { cancelled = b; }
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
@NotNull @Override public HandlerList getHandlers() { return handlers; }
|
||||
}
|
Loading…
Reference in New Issue
Block a user