package com.destroystokyo.paper.event.entity; import org.bukkit.entity.Egg; import org.bukkit.entity.EntityType; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; import org.jetbrains.annotations.NotNull; /** * Called when a thrown egg might hatch. *

* This event fires for all thrown eggs that may hatch, players, dispensers, etc. */ public class ThrownEggHatchEvent extends Event { private static final HandlerList handlers = new HandlerList(); private final Egg egg; private boolean hatching; private EntityType hatchType; private byte numHatches; public ThrownEggHatchEvent(@NotNull final Egg egg, final boolean hatching, final byte numHatches, @NotNull final EntityType hatchingType) { this.egg = egg; this.hatching = hatching; this.numHatches = numHatches; this.hatchType = hatchingType; } /** * Gets the egg involved in this event. * * @return the egg involved in this event */ @NotNull public Egg getEgg() { return egg; } /** * Gets whether the egg is hatching or not. Will be what the server * would've done without interaction. * * @return boolean Whether the egg is going to hatch or not */ public boolean isHatching() { return hatching; } /** * Sets whether the egg will hatch or not. * * @param hatching true if you want the egg to hatch, false if you want it * not to */ public void setHatching(boolean hatching) { this.hatching = hatching; } /** * Get the type of the mob being hatched (EntityType.CHICKEN by default) * * @return The type of the mob being hatched by the egg */ @NotNull public EntityType getHatchingType() { return hatchType; } /** * Change the type of mob being hatched by the egg * * @param hatchType The type of the mob being hatched by the egg */ public void setHatchingType(@NotNull EntityType hatchType) { if (!hatchType.isSpawnable()) throw new IllegalArgumentException("Can't spawn that entity type from an egg!"); this.hatchType = hatchType; } /** * Get the number of mob hatches from the egg. By default the number will * be the number the server would've done *

* * @return The number of mobs going to be hatched by the egg */ public byte getNumHatches() { return numHatches; } /** * Change the number of mobs coming out of the hatched egg *

* The boolean hatching will override this number. Ie. If hatching = * false, this number will not matter * * @param numHatches The number of mobs coming out of the egg */ public void setNumHatches(byte numHatches) { this.numHatches = numHatches; } @NotNull @Override public HandlerList getHandlers() { return handlers; } @NotNull public static HandlerList getHandlerList() { return handlers; } }