mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-13 22:25:31 +01:00
3fa4ea6668
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 6680169e [#660/Enum] Merge remote-tracking branch 'origin/pr/660' into experimental 8b97f215 Add missing AbstractTestingBase extension 9f21f42b [#660/Enum] Merge remote-tracking branch 'origin/pr/660' into experimental fb59a4a0 Create experimental version a7c1393b Merge branch 'master' into enums-to-registers 1af01165 Merge branch 'master' into enums-to-registers 4ee82e4e Implement feedback af8ffd60 Merge branch 'master' into enums-to-registers 6a8ea63f Updated to 1.20 22ae9ebc Merge branch 'master' into enums-to-registers b1d669be Some clean up 685d812e Merge branch 'master' into enums-to-registers 00d778c7 Convert MusicInstrument bba2eb5f Convert GameEvent ffbf67a1 Convert PotionType eacaa45d Convert Particle d08d21d1 Convert PatternType c6b51f7c Convert Cat type af6c2987 Make missing Frog variant abstract a67a5f5c Add missing Annotation 6ab21c50 Change how converting from / to BlockType and ItemType work e3e84e69 Add Objects.requireNonNull so that there are not marked as nullable fceddab5 Add missing deprecation e91906f5 Don't convert legacy in register instead, only in required method 2200b334 Use static constructors for ItemStack b5f483b0 Deprecated Material a995df2a Fix typo getItemTyp 9cedb664 import ItemType 27e282b2 getSteerItemType -> getSteerItem d8d0e43b Better Piglin method names 3a2ab399 BLOCK_TYPE -> BLOCK, ITEM_TYPE -> ITEM a0eb63ac Interface it is 4bb0b646 Split Material into BlockType and ItemType b6bfcff5 Merge branch 'master' into enums-to-registers 1f86c847 Updated to Mockito 5.3.1 280ee1f7 Fix merge, updated to 1.19.4 9e0c7ad5 Merge branch 'master' into enums-to-registers fdbed698 Updated to 1.19.3 85c3e2d3 Merge branch 'master' into enums-to-registers b2c390af Fix merge 4e405647 Merge branch 'master' into enums-to-registers d01b4c90 Fix copy/paste ba2c8cb1 Update to 1.19 7e4f2db2 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/bukkit into enums-to-registers a1a974f0 Fix merge 7d3a91d3 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/bukkit into enums-to-registers 499e22d9 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/bukkit into enums-to-registers a0cf419f Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/bukkit into enums-to-registers d5bd36a2 Fix / Implement merge changes fe643952 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/bukkit into enums-to-registers cf1d2005 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/bukkit into enums-to-registers f18dce93 Make Statistic abstract bbe3f791 Fix 1.18 merge Handle comment out test cases 0988647e Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/bukkit into enums-to-registers 6e4f2c50 Populated BlockType and ItemType 7a58144d Convert Material enum, midpoint push, it compiles and runs 4771132c Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/bukkit into enums-to-registers e6b179ff Convert Material enum, midpoint push to merge BlockState changes f33b85a0 Change other enums / classes. 8b0d5418 Create seperat OldEnum class, which holds common enum methods. 45544426 Change Enums to classes to easier handle none standart minecraft values CraftBukkit Changes: 8969b32d0 [#931/Enum] Merge remote-tracking branch 'origin/pr/931' into experimental 222257a67 Add missing AbstractTestingBase extension 0480af399 [#931/Enum] Merge remote-tracking branch 'origin/pr/931' into experimental 1afa1ddc2 Create experimental version 00780ea51 Ignore FactoryItemMaterialTest test 676969d01 SPIGOT-7389: Handle setting null items in ChiseledBookshelf Inventory 84f10cc36 Fix merge 9e114e13e Merge branch 'master' into enums-to-registers 941787e24 Add missing Commodore for 1.20 updated 6dac9a12d Updated tests 737426398 Only allow reference holder aaaa5fa88 Merge branch 'master' into enums-to-registers 74957eb99 Merge branch 'master' into enums-to-registers a1ca4e870 Merge branch 'master' into enums-to-registers f293f4a61 Updated to 1.20 b434b3d15 Merge branch 'master' into enums-to-registers e99dcbda7 Some clean up fcead8aed Use correct primitive class e955d9c50 Fix some Commodore errors af5526ebb Allow Material to support older plugins b83afd643 Add rewrite for Google enum set methods 067323765 Add missing method replacement in dynamic invocation 63e17e631 Merge branch 'master' into enums-to-registers 26dfcacf8 Bad copy and past d50c9bd6a Convert MusicInstrument c0c5312db Convert GameEvent 39daffe2c Convert PotionType 9b974f832 Convert Particle f528fca63 Convert PatternType 525c65006 Convert Cat type 6832b8fbb More consistent to / from bukkit / minecraft methods d31e38e16 Make missing Frog variant abstract e4f0e7d8e This shouldn't be committed 6fee81baa Add Commodore for EnumSet 82a668683 Fix hasItemType / getItemType f70162d66 Change how converting from / to BlockType and ItemType work c3f7c7886 Don't convert legacy in register instead, only in required method 2039e05fa Use static constructors for ItemStack fe221578b More Commodore 2b70bd171 More Commodore 70f4a89f5 Fix some Commodore 06544ed4b Fix typo getItemTyp 6269d2e42 getSteerItemType -> getSteerItem a19ac46c0 Better Piglin method names eef5f52c6 BLOCK_TYPE -> BLOCK, ITEM_TYPE -> ITEM bbaff1348 Interface it is c39e1316c Finish Commodore action for Material split dd8552105 Work on Commodore 1d4ef8bf2 Split Material into BlockType and ItemType 6c5a98220 Merge branch 'master' into enums-to-registers 869658a96 Handle Material calls in lambda expression 523ac4ac0 Add reroute for Class#getEnumConstants 0a4463279 Use extra method for getting registry 602d9b404 Updated to Mockito 5.3.1 8ff87b77d Fix merge, updated to 1.19.4 9d739d313 Merge branch 'master' into enums-to-registers eb6f702ff Reduce usage of BuiltInRegistries b6f667cac Some more asm compatibility changes, add config option 87c931d38 Handle enum maps a2c6699db Updated to 1.19.3 f7c27584f Merge branch 'master' into enums-to-registers 2f95b9951 Fix merge 184b05740 Merge branch 'master' into enums-to-registers 12bd8de26 Updated to 1.19 9c57831b7 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/craftbukkit into enums-to-registers 4ed8eb402 Fix merge a9faac8e4 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/craftbukkit into enums-to-registers 0d2988603 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/craftbukkit into enums-to-registers 3f8f9557d Fix merge, updated to 1.18.2 1560490c6 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/craftbukkit into enums-to-registers a0e4eb12c Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/craftbukkit into enums-to-registers 8b59f682d Move getType method to CraftEntity class b849c0147 Add missing patches 4644ba79f Fix / Implement merge changes cf9ee732e Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/craftbukkit into enums-to-registers 0c9125b67 Use Tag where possible cc05153d9 Cache interactable call ab5cc36de Use getHandle 83ebf4114 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/craftbukkit into enums-to-registers bc20aea0c Make Statistic abstract 3faa7e135 Add Tests for Material BlockType and ItemType e10f74365 Fix 1.18 merge Handle comment out test cases f72f70ec4 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/craftbukkit into enums-to-registers dbf4f5b7e Populated BlockType and ItemType 015afc1bc Convert Material enum, midpoint push, it compiles and runs cc0112866 Merge branch 'master' of https://hub.spigotmc.org/stash/scm/~derfrzocker/craftbukkit into enums-to-registers e26742c59 Convert Material enum, midpoint push to merge BlockState changes 796ad9295 Fix bug in legacy naming converting. 199c8278c Change other enums / classes. fd513652a Seperated custom biome value handling. Fix compareTo call. 60c71ce07 Change Enums to classes to easier handle none standart minecraft values Spigot Changes: addcf45f [Enum] Rebuild patches
420 lines
14 KiB
Diff
420 lines
14 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
|
|
Date: Wed, 26 May 2021 19:34:43 -0400
|
|
Subject: [PATCH] More Projectile API
|
|
|
|
Co-authored-by: Nassim Jahnke <nassim@njahnke.dev>
|
|
|
|
diff --git a/src/main/java/org/bukkit/entity/AbstractArrow.java b/src/main/java/org/bukkit/entity/AbstractArrow.java
|
|
index 225a24898acd25038ea2a8448f9f3b57643d3026..d173010d51d05928c35bb4bf5fbc08ce221ec474 100644
|
|
--- a/src/main/java/org/bukkit/entity/AbstractArrow.java
|
|
+++ b/src/main/java/org/bukkit/entity/AbstractArrow.java
|
|
@@ -151,6 +151,36 @@ public interface AbstractArrow extends Projectile {
|
|
@NotNull
|
|
org.bukkit.inventory.ItemStack getItemStack();
|
|
|
|
+ /**
|
|
+ * Sets the amount of ticks this arrow has been alive in the world
|
|
+ * This is used to determine when the arrow should be automatically despawned.
|
|
+ *
|
|
+ * @param ticks lifetime ticks
|
|
+ */
|
|
+ void setLifetimeTicks(int ticks);
|
|
+
|
|
+ /**
|
|
+ * Gets how many ticks this arrow has been in the world for.
|
|
+ *
|
|
+ * @return ticks this arrow has been in the world
|
|
+ */
|
|
+ int getLifetimeTicks();
|
|
+
|
|
+ /**
|
|
+ * Gets the sound that is played when this arrow hits an entity.
|
|
+ *
|
|
+ * @return sound that plays
|
|
+ */
|
|
+ @NotNull
|
|
+ org.bukkit.Sound getHitSound();
|
|
+
|
|
+ /**
|
|
+ * Sets the sound that is played when this arrow hits an entity.
|
|
+ *
|
|
+ * @param sound sound that is played
|
|
+ */
|
|
+ void setHitSound(@NotNull org.bukkit.Sound sound);
|
|
+
|
|
/**
|
|
* Sets this arrow to "noclip" status.
|
|
*
|
|
diff --git a/src/main/java/org/bukkit/entity/Firework.java b/src/main/java/org/bukkit/entity/Firework.java
|
|
index 0d31aa0b22cf1e849572294e2cfe38b48c9210af..217d348ad0bbef720b25d3b507a55ca8105b7731 100644
|
|
--- a/src/main/java/org/bukkit/entity/Firework.java
|
|
+++ b/src/main/java/org/bukkit/entity/Firework.java
|
|
@@ -16,6 +16,8 @@ public interface Firework extends Projectile {
|
|
|
|
/**
|
|
* Apply the provided meta to the fireworks
|
|
+ * <p>
|
|
+ * Adjusts detonation ticks automatically.
|
|
*
|
|
* @param meta The FireworkMeta to apply
|
|
*/
|
|
@@ -54,31 +56,39 @@ public interface Firework extends Projectile {
|
|
* {@link #getMaxLife()}, the firework will detonate.
|
|
*
|
|
* @param ticks the ticks to set. Must be greater than or equal to 0
|
|
+ * @deprecated use {@link #setTicksFlown(int)}
|
|
* @return true if the life was set, false if this firework has already detonated
|
|
*/
|
|
+ @Deprecated(forRemoval = true) // Paper
|
|
boolean setLife(int ticks);
|
|
|
|
/**
|
|
* Get the ticks that this firework has been alive. When this value reaches
|
|
* {@link #getMaxLife()}, the firework will detonate.
|
|
*
|
|
+ * @deprecated use {@link #getTicksFlown()}
|
|
* @return the life ticks
|
|
*/
|
|
+ @Deprecated(forRemoval = true) // Paper
|
|
int getLife();
|
|
|
|
/**
|
|
* Set the time in ticks this firework will exist until it is detonated.
|
|
*
|
|
* @param ticks the ticks to set. Must be greater than 0
|
|
+ * @deprecated use {@link #setTicksToDetonate(int)}
|
|
* @return true if the time was set, false if this firework has already detonated
|
|
*/
|
|
+ @Deprecated(forRemoval = true) // Paper
|
|
boolean setMaxLife(int ticks);
|
|
|
|
/**
|
|
* Get the time in ticks this firework will exist until it is detonated.
|
|
*
|
|
+ * @deprecated use {@link #getTicksToDetonate()}
|
|
* @return the maximum life in ticks
|
|
*/
|
|
+ @Deprecated(forRemoval = true) // Paper
|
|
int getMaxLife();
|
|
|
|
/**
|
|
@@ -127,4 +137,52 @@ public interface Firework extends Projectile {
|
|
return getAttachedTo();
|
|
}
|
|
// Paper end
|
|
+
|
|
+ // Paper start - Firework API
|
|
+ /**
|
|
+ * Gets the item used in the firework.
|
|
+ *
|
|
+ * @return firework item
|
|
+ */
|
|
+ @NotNull
|
|
+ public org.bukkit.inventory.ItemStack getItem();
|
|
+
|
|
+ /**
|
|
+ * Sets the item used in the firework.
|
|
+ * <p>
|
|
+ * Firework explosion effects are used from this item.
|
|
+ *
|
|
+ * @param itemStack item to set
|
|
+ */
|
|
+ void setItem(@org.jetbrains.annotations.Nullable org.bukkit.inventory.ItemStack itemStack);
|
|
+
|
|
+ /**
|
|
+ * Gets the number of ticks the firework has flown.
|
|
+ *
|
|
+ * @return ticks flown
|
|
+ */
|
|
+ int getTicksFlown();
|
|
+
|
|
+ /**
|
|
+ * Sets the number of ticks the firework has flown.
|
|
+ * Setting this greater than detonation ticks will cause the firework to explode.
|
|
+ *
|
|
+ * @param ticks ticks flown
|
|
+ */
|
|
+ void setTicksFlown(int ticks);
|
|
+
|
|
+ /**
|
|
+ * Gets the number of ticks the firework will detonate on.
|
|
+ *
|
|
+ * @return the tick to detonate on
|
|
+ */
|
|
+ int getTicksToDetonate();
|
|
+
|
|
+ /**
|
|
+ * Set the amount of ticks the firework will detonate on.
|
|
+ *
|
|
+ * @param ticks ticks to detonate on
|
|
+ */
|
|
+ void setTicksToDetonate(int ticks);
|
|
+ // Paper end
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/entity/FishHook.java b/src/main/java/org/bukkit/entity/FishHook.java
|
|
index 94e1a30ea1bc26821065a6d89c1f5669bd1d08ae..6ed83d3e4d23e0dc0e1b156a1ee221aaba5c7210 100644
|
|
--- a/src/main/java/org/bukkit/entity/FishHook.java
|
|
+++ b/src/main/java/org/bukkit/entity/FishHook.java
|
|
@@ -322,4 +322,20 @@ public interface FishHook extends Projectile {
|
|
*/
|
|
BOBBING;
|
|
}
|
|
+
|
|
+ // Paper start - More FishHook API
|
|
+ /**
|
|
+ * Get the number of ticks the hook needs to wait for a fish to bite.
|
|
+ *
|
|
+ * @return Number of ticks
|
|
+ */
|
|
+ int getWaitTime();
|
|
+
|
|
+ /**
|
|
+ * Sets the number of ticks the hook needs to wait for a fish to bite.
|
|
+ *
|
|
+ * @param ticks Number of ticks
|
|
+ */
|
|
+ void setWaitTime(int ticks);
|
|
+ // Paper end
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/entity/Projectile.java b/src/main/java/org/bukkit/entity/Projectile.java
|
|
index a523fca4baab447181ef91df67fa69b24e010149..81ff7003e15e209358e8434a6875af79a4eb57f2 100644
|
|
--- a/src/main/java/org/bukkit/entity/Projectile.java
|
|
+++ b/src/main/java/org/bukkit/entity/Projectile.java
|
|
@@ -12,6 +12,7 @@ public interface Projectile extends Entity {
|
|
* Retrieve the shooter of this projectile.
|
|
*
|
|
* @return the {@link ProjectileSource} that shot this projectile
|
|
+ * @see #getOwnerUniqueId()
|
|
*/
|
|
@Nullable
|
|
public ProjectileSource getShooter();
|
|
@@ -43,4 +44,89 @@ public interface Projectile extends Entity {
|
|
*/
|
|
@Deprecated(forRemoval = true) // Paper
|
|
public void setBounce(boolean doesBounce);
|
|
+ // Paper start
|
|
+
|
|
+ /**
|
|
+ * Gets whether the projectile has left the
|
|
+ * hitbox of their shooter and can now hit entities.
|
|
+ *
|
|
+ * @return has left shooter's hitbox
|
|
+ */
|
|
+ boolean hasLeftShooter();
|
|
+
|
|
+ /**
|
|
+ * Sets whether the projectile has left the
|
|
+ * hitbox of their shooter and can now hit entities.
|
|
+ *
|
|
+ * This is recalculated each tick if the projectile has a shooter.
|
|
+ *
|
|
+ * @param leftShooter has left shooter's hitbox
|
|
+ */
|
|
+ void setHasLeftShooter(boolean leftShooter);
|
|
+
|
|
+ /**
|
|
+ * Gets whether the projectile has been
|
|
+ * shot into the world and has sent a projectile
|
|
+ * shot game event.
|
|
+ *
|
|
+ * @return has been shot into the world
|
|
+ */
|
|
+ boolean hasBeenShot();
|
|
+
|
|
+ /**
|
|
+ * Sets whether the projectile has been
|
|
+ * shot into the world and has sent a projectile
|
|
+ * shot game event in the next tick.
|
|
+ *
|
|
+ * Setting this to false will cause a game event
|
|
+ * to fire and the value to be set back to true.
|
|
+ *
|
|
+ * @param beenShot has been in shot into the world
|
|
+ */
|
|
+ void setHasBeenShot(boolean beenShot);
|
|
+
|
|
+ /**
|
|
+ * Gets whether this projectile can hit an entity.
|
|
+ * <p>
|
|
+ * This method returns true under the following conditions:
|
|
+ * <p>
|
|
+ * - The shooter can see the entity ({@link Player#canSee(Entity)}) <p>
|
|
+ * - The entity is alive and not a spectator <p>
|
|
+ * - The projectile has left the hitbox of the shooter ({@link #hasLeftShooter()})<p>
|
|
+ * - If this is an arrow with piercing, it has not pierced the entity already
|
|
+ *
|
|
+ * @param entity the entity to check if this projectile can hit
|
|
+ * @return true if this projectile can damage the entity, false otherwise
|
|
+ */
|
|
+ boolean canHitEntity(@org.jetbrains.annotations.NotNull Entity entity);
|
|
+
|
|
+ /**
|
|
+ * Makes this projectile hit a specific entity.
|
|
+ * This uses the current position of the projectile for the hit point.
|
|
+ * Using this method will result in {@link org.bukkit.event.entity.ProjectileHitEvent} being called.
|
|
+ * @param entity the entity to hit
|
|
+ * @see #hitEntity(Entity, org.bukkit.util.Vector)
|
|
+ * @see #canHitEntity(Entity)
|
|
+ */
|
|
+ void hitEntity(@org.jetbrains.annotations.NotNull Entity entity);
|
|
+
|
|
+ /**
|
|
+ * Makes this projectile hit a specific entity from a specific point.
|
|
+ * Using this method will result in {@link org.bukkit.event.entity.ProjectileHitEvent} being called.
|
|
+ * @param entity the entity to hit
|
|
+ * @param vector the direction to hit from
|
|
+ * @see #hitEntity(Entity)
|
|
+ * @see #canHitEntity(Entity)
|
|
+ */
|
|
+ void hitEntity(@org.jetbrains.annotations.NotNull Entity entity, @org.jetbrains.annotations.NotNull org.bukkit.util.Vector vector);
|
|
+
|
|
+ /**
|
|
+ * Gets the owner's UUID
|
|
+ *
|
|
+ * @return the owner's UUID, or null if not owned
|
|
+ * @see #getShooter()
|
|
+ */
|
|
+ @Nullable
|
|
+ java.util.UUID getOwnerUniqueId();
|
|
+ // Paper end
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/entity/ShulkerBullet.java b/src/main/java/org/bukkit/entity/ShulkerBullet.java
|
|
index 4623e0d767b343cbdc6fcf20b3b2ff7ff14863cf..dd69a68d1f005c25329bb0366d161ae9b061e108 100644
|
|
--- a/src/main/java/org/bukkit/entity/ShulkerBullet.java
|
|
+++ b/src/main/java/org/bukkit/entity/ShulkerBullet.java
|
|
@@ -18,4 +18,61 @@ public interface ShulkerBullet extends Projectile {
|
|
* @param target the entity to target
|
|
*/
|
|
void setTarget(@Nullable Entity target);
|
|
+ // Paper start
|
|
+ /**
|
|
+ * Gets the relative offset that this shulker bullet should move towards,
|
|
+ * note that this will change each tick as the skulker bullet approaches the target.
|
|
+ *
|
|
+ * @return target delta offset
|
|
+ */
|
|
+ @org.jetbrains.annotations.NotNull
|
|
+ org.bukkit.util.Vector getTargetDelta();
|
|
+
|
|
+
|
|
+ /**
|
|
+ * Sets the relative offset that this shulker bullet should move towards,
|
|
+ * note that this will change each tick as the skulker bullet approaches the target.
|
|
+ * This is usually relative towards their target.
|
|
+ *
|
|
+ * @param vector target
|
|
+ */
|
|
+ void setTargetDelta(@org.jetbrains.annotations.NotNull org.bukkit.util.Vector vector);
|
|
+
|
|
+ /**
|
|
+ * Gets the current movement direction.
|
|
+ * This is used to determine the next movement direction to ensure
|
|
+ * that the bullet does not move in the same direction.
|
|
+ *
|
|
+ * @return null or their current direction
|
|
+ */
|
|
+ @Nullable
|
|
+ org.bukkit.block.BlockFace getCurrentMovementDirection();
|
|
+
|
|
+ /**
|
|
+ * Set the current movement direction.
|
|
+ * This is used to determine the next movement direction to ensure
|
|
+ * that the bullet does not move in the same direction.
|
|
+ *
|
|
+ * Set to null to simply pick a random direction.
|
|
+ *
|
|
+ * @param movementDirection null or a direction
|
|
+ */
|
|
+ void setCurrentMovementDirection(@Nullable org.bukkit.block.BlockFace movementDirection);
|
|
+
|
|
+ /**
|
|
+ * Gets how many ticks this shulker bullet
|
|
+ * will attempt to move in its current direction.
|
|
+ *
|
|
+ * @return number of steps
|
|
+ */
|
|
+ int getFlightSteps();
|
|
+
|
|
+ /**
|
|
+ * Sets how many ticks this shulker bullet
|
|
+ * will attempt to move in its current direction.
|
|
+ *
|
|
+ * @param steps number of steps
|
|
+ */
|
|
+ void setFlightSteps(int steps);
|
|
+ // Paper end
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/entity/ThrownPotion.java b/src/main/java/org/bukkit/entity/ThrownPotion.java
|
|
index 4b3e70a029a3402b3ade9deef2b7b4f3e1006f98..225ac312613b9e8f3cf680819f2ebe350d1bf48a 100644
|
|
--- a/src/main/java/org/bukkit/entity/ThrownPotion.java
|
|
+++ b/src/main/java/org/bukkit/entity/ThrownPotion.java
|
|
@@ -32,12 +32,34 @@ public interface ThrownPotion extends ThrowableProjectile {
|
|
|
|
/**
|
|
* Set the ItemStack for this thrown potion.
|
|
- * <p>
|
|
- * The ItemStack must be of type {@link org.bukkit.inventory.ItemType#SPLASH_POTION}
|
|
- * or {@link org.bukkit.inventory.ItemType#LINGERING_POTION}, otherwise an exception
|
|
- * is thrown.
|
|
*
|
|
* @param item New ItemStack
|
|
*/
|
|
public void setItem(@NotNull ItemStack item);
|
|
+
|
|
+ // Paper start - Projectile API
|
|
+ /**
|
|
+ * Gets a copy of the PotionMeta for this thrown potion.
|
|
+ * This includes what effects will be applied by this potion.
|
|
+ *
|
|
+ * @return potion meta
|
|
+ */
|
|
+ @NotNull
|
|
+ org.bukkit.inventory.meta.PotionMeta getPotionMeta();
|
|
+
|
|
+ /**
|
|
+ * Sets the PotionMeta of this thrown potion.
|
|
+ * This will modify the effects applied by this potion.
|
|
+ * <p>
|
|
+ * Note that the type of {@link #getItem()} is irrelevant
|
|
+ *
|
|
+ * @param meta potion meta
|
|
+ */
|
|
+ void setPotionMeta(@NotNull org.bukkit.inventory.meta.PotionMeta meta);
|
|
+
|
|
+ /**
|
|
+ * Splashes the potion at its current location.
|
|
+ */
|
|
+ void splash();
|
|
+ // Paper end
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/entity/Trident.java b/src/main/java/org/bukkit/entity/Trident.java
|
|
index c8015ff610e3c1222cb368ea1d8a0c2f3785d9c7..02584eced96944a551140f8150c65a7c0f4bb55e 100644
|
|
--- a/src/main/java/org/bukkit/entity/Trident.java
|
|
+++ b/src/main/java/org/bukkit/entity/Trident.java
|
|
@@ -38,5 +38,24 @@ public interface Trident extends AbstractArrow, ThrowableProjectile {
|
|
* @throws IllegalArgumentException if the loyalty level is lower than 0 or greater than 127
|
|
*/
|
|
void setLoyaltyLevel(int loyaltyLevel);
|
|
+
|
|
+ /**
|
|
+ * Gets if this trident has dealt damage to an
|
|
+ * entity yet or has hit the floor.
|
|
+ *
|
|
+ * If neither of these events have occurred yet, this will
|
|
+ * return false.
|
|
+ *
|
|
+ * @return has dealt damage
|
|
+ */
|
|
+ boolean hasDealtDamage();
|
|
+
|
|
+ /**
|
|
+ * Sets if this trident has dealt damage to an entity
|
|
+ * yet or has hit the floor.
|
|
+ *
|
|
+ * @param hasDealtDamage has dealt damage or hit the floor
|
|
+ */
|
|
+ void setHasDealtDamage(boolean hasDealtDamage);
|
|
}
|
|
// Paper end
|