ForgePatch/src/main/java/net/minecraftforge/event/entity/living/LivingEntityUseItemEvent.java

145 lines
4.4 KiB
Java
Raw Normal View History

/*
* Minecraft Forge
2020-07-02 17:49:11 +00:00
* Copyright (c) 2016-2020.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation version 2.1
* of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
2016-03-02 04:42:36 +00:00
package net.minecraftforge.event.entity.living;
2019-05-23 23:02:15 +00:00
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
2018-06-11 01:12:46 +00:00
import net.minecraftforge.eventbus.api.Cancelable;
import javax.annotation.Nonnull;
public class LivingEntityUseItemEvent extends LivingEvent
{
private final ItemStack item;
private int duration;
2019-05-23 23:02:15 +00:00
private LivingEntityUseItemEvent(LivingEntity entity, @Nonnull ItemStack item, int duration)
{
2016-03-02 04:42:36 +00:00
super(entity);
this.item = item;
this.setDuration(duration);
}
@Nonnull
public ItemStack getItem()
{
return item;
}
public int getDuration()
{
return duration;
}
public void setDuration(int duration)
{
this.duration = duration;
}
/**
* Fired when a player starts 'using' an item, typically when they hold right mouse.
* Examples:
* Drawing a bow
* Eating Food
* Drinking Potions/Milk
* Guarding with a sword
*
* Cancel the event, or set the duration or <= 0 to prevent it from processing.
*
*/
@Cancelable
2016-03-02 04:42:36 +00:00
public static class Start extends LivingEntityUseItemEvent
{
2019-05-23 23:02:15 +00:00
public Start(LivingEntity entity, @Nonnull ItemStack item, int duration)
{
2016-03-02 04:42:36 +00:00
super(entity, item, duration);
}
}
/**
* Fired every tick that a player is 'using' an item, see {@link Start} for info.
*
* Cancel the event, or set the duration or <= 0 to cause the player to stop using the item.
*
*/
@Cancelable
2016-03-02 04:42:36 +00:00
public static class Tick extends LivingEntityUseItemEvent
{
2019-05-23 23:02:15 +00:00
public Tick(LivingEntity entity, @Nonnull ItemStack item, int duration)
{
2016-03-02 04:42:36 +00:00
super(entity, item, duration);
}
}
/**
2016-03-02 04:42:36 +00:00
* Fired when a player stops using an item without the use duration timing out.
* Example:
* Stop eating 1/2 way through
* Stop defending with sword
* Stop drawing bow. This case would fire the arrow
2016-03-02 04:42:36 +00:00
*
* Duration on this event is how long the item had left in it's count down before 'finishing'
*
2016-03-02 04:42:36 +00:00
* Canceling this event will prevent the Item from being notified that it has stopped being used,
* The only vanilla item this would effect are bows, and it would cause them NOT to fire there arrow.
*/
@Cancelable
2016-03-02 04:42:36 +00:00
public static class Stop extends LivingEntityUseItemEvent
{
2019-05-23 23:02:15 +00:00
public Stop(LivingEntity entity, @Nonnull ItemStack item, int duration)
{
2016-03-02 04:42:36 +00:00
super(entity, item, duration);
}
}
/**
* Fired after an item has fully finished being used.
* The item has been notified that it was used, and the item/result stacks reflect after that state.
* This means that when this is fired for a Potion, the potion effect has already been applied.
*
* {@link LivingEntityUseItemEvent#item} is a copy of the item BEFORE it was used.
2016-03-02 04:42:36 +00:00
*
* If you wish to cancel those effects, you should cancel one of the above events.
2016-03-02 04:42:36 +00:00
*
* The result item stack is the stack that is placed in the player's inventory in replacement of the stack that is currently being used.
*
*/
2016-03-02 04:42:36 +00:00
public static class Finish extends LivingEntityUseItemEvent
{
private ItemStack result;
2019-05-23 23:02:15 +00:00
public Finish(LivingEntity entity, @Nonnull ItemStack item, int duration, @Nonnull ItemStack result)
{
2016-03-02 04:42:36 +00:00
super(entity, item, duration);
this.setResultStack(result);
}
@Nonnull
public ItemStack getResultStack()
{
return result;
}
public void setResultStack(@Nonnull ItemStack result)
{
this.result = result;
}
}
}