diff options
Diffstat (limited to 'Spigot-API-Patches-Unmapped/0048-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch')
-rw-r--r-- | Spigot-API-Patches-Unmapped/0048-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/Spigot-API-Patches-Unmapped/0048-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch b/Spigot-API-Patches-Unmapped/0048-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch new file mode 100644 index 0000000000..5dadaf640f --- /dev/null +++ b/Spigot-API-Patches-Unmapped/0048-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch @@ -0,0 +1,122 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar <[email protected]> +Date: Tue, 19 Dec 2017 16:28:32 -0500 +Subject: [PATCH] ExperienceOrbs API for Reason/Source/Triggering player + +Adds lots of information about why this orb exists. + +Replaces isFromBottle() with logic that persists entity reloads too. + +diff --git a/src/main/java/org/bukkit/entity/ExperienceOrb.java b/src/main/java/org/bukkit/entity/ExperienceOrb.java +index c286edfd827e185a76e44c44faace19a80325d7a..dec70bbfaf73a9d525b2c45682b804c684e1645b 100644 +--- a/src/main/java/org/bukkit/entity/ExperienceOrb.java ++++ b/src/main/java/org/bukkit/entity/ExperienceOrb.java +@@ -1,5 +1,8 @@ + package org.bukkit.entity; + ++import org.jetbrains.annotations.NotNull; ++import org.jetbrains.annotations.Nullable; // Paper ++ + /** + * Represents an Experience Orb. + */ +@@ -18,4 +21,99 @@ public interface ExperienceOrb extends Entity { + * @param value Amount of experience + */ + public void setExperience(int value); ++ ++ // Paper start ++ /** ++ * Check if this orb was spawned from a {@link ThrownExpBottle} ++ * ++ * @return if orb was spawned from a bottle ++ * @deprecated Use getSpawnReason() == EXP_BOTTLE ++ */ ++ @Deprecated ++ default boolean isFromBottle() { ++ return getSpawnReason() == SpawnReason.EXP_BOTTLE; ++ } ++ ++ /** ++ * Reasons for why this Experience Orb was spawned ++ */ ++ enum SpawnReason { ++ /** ++ * Spawned by a player dying ++ */ ++ PLAYER_DEATH, ++ /** ++ * Spawned by an entity dying after being damaged by a player ++ */ ++ ENTITY_DEATH, ++ /** ++ * Spawned by player using a furnace ++ */ ++ FURNACE, ++ /** ++ * Spawned by player breeding animals ++ */ ++ BREED, ++ /** ++ * Spawned by player trading with a villager ++ */ ++ VILLAGER_TRADE, ++ /** ++ * Spawned by player fishing ++ */ ++ FISHING, ++ /** ++ * Spawned by player breaking a block that gives experience points such as Diamond Ore ++ */ ++ BLOCK_BREAK, ++ /** ++ * Spawned by Bukkit API ++ */ ++ CUSTOM, ++ /** ++ * Spawned by a player throwing an experience points bottle ++ */ ++ EXP_BOTTLE, ++ /** ++ * Spawned by a player using a grindstone ++ */ ++ GRINDSTONE, ++ /** ++ * We do not know why it was spawned ++ */ ++ UNKNOWN ++ } ++ ++ /** ++ * If this experience orb was triggered to be spawned by ++ * an entity such as a player, due to events such as killing entity, ++ * breaking blocks, smelting in a furnace, etc, this will return the UUID ++ * of the entity that triggered this orb to drop. ++ * ++ * In the case of an entity being killed, this will be the killers UUID. ++ * ++ * @return UUID of the player that triggered this orb to drop, or null if unknown/no triggering entity ++ */ ++ @Nullable java.util.UUID getTriggerEntityId(); ++ ++ /** ++ * If this experience orb was spawned in relation to another ++ * entity, such as a player or other living entity death, or breeding, ++ * return the source entity UUID. ++ * ++ * In the case of breeding, this will be the new baby entities UUID. ++ * In the case of an entity being killed, this will be the dead entities UUID. ++ * ++ * @return The UUID of the entity that sourced this experience orb ++ */ ++ @Nullable java.util.UUID getSourceEntityId(); ++ ++ /** ++ * Gets the reason that this experience orb was spawned. For any case that we ++ * do not know, such as orbs spawned before this API was added, UNKNOWN is returned. ++ * @return The reason for this orb being spawned. ++ */ ++ @NotNull ++ SpawnReason getSpawnReason(); ++ // Paper end + } |