aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0186-Add-ThrownEggHatchEvent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0186-Add-ThrownEggHatchEvent.patch')
-rw-r--r--patches/api/0186-Add-ThrownEggHatchEvent.patch129
1 files changed, 129 insertions, 0 deletions
diff --git a/patches/api/0186-Add-ThrownEggHatchEvent.patch b/patches/api/0186-Add-ThrownEggHatchEvent.patch
new file mode 100644
index 0000000000..f605a2a11b
--- /dev/null
+++ b/patches/api/0186-Add-ThrownEggHatchEvent.patch
@@ -0,0 +1,129 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: William Blake Galbreath <[email protected]>
+Date: Sun, 9 Feb 2020 00:19:08 -0600
+Subject: [PATCH] Add ThrownEggHatchEvent
+
+Adds a new event similar to PlayerEggThrowEvent, but without the Player requirement
+(dispensers can throw eggs to hatch them, too).
+
+diff --git a/src/main/java/com/destroystokyo/paper/event/entity/ThrownEggHatchEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/ThrownEggHatchEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..085d77dde83d6ed13eb83f23cf3e51d380187c9c
+--- /dev/null
++++ b/src/main/java/com/destroystokyo/paper/event/entity/ThrownEggHatchEvent.java
+@@ -0,0 +1,115 @@
++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.
++ * <p>
++ * 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
++ * <ul>
++ * <li>7/8 chance of being 0
++ * <li>31/256 ~= 1/8 chance to be 1
++ * <li>1/256 chance to be 4
++ * </ul>
++ *
++ * @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
++ * <p>
++ * 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;
++ }
++}