PaperMC/patches/api/Missing-Entity-Behavior-API.patch

656 lines
21 KiB
Diff
Raw Normal View History

2021-06-22 09:44:02 +02:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
Date: Fri, 28 May 2021 21:06:59 -0400
Subject: [PATCH] Missing Entity Behavior API
2022-03-11 15:24:45 +01:00
Co-authored-by: Nassim Jahnke <nassim@njahnke.dev>
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2021-06-22 09:44:02 +02:00
2021-10-21 03:09:42 +02:00
diff --git a/src/main/java/org/bukkit/entity/AbstractHorse.java b/src/main/java/org/bukkit/entity/AbstractHorse.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/AbstractHorse.java
+++ b/src/main/java/org/bukkit/entity/AbstractHorse.java
@@ -0,0 +0,0 @@ public interface AbstractHorse extends Vehicle, InventoryHolder, Tameable {
@NotNull
@Override
public AbstractHorseInventory getInventory();
+
+ // Paper start - Horse API
+ /**
+ * Gets if a horse is in their eating grass animation.
+ *
+ * @return eating grass animation is active
+ * @deprecated use {@link #isEatingHaystack()}
2021-10-21 03:09:42 +02:00
+ */
+ @Deprecated
2021-10-21 03:09:42 +02:00
+ public boolean isEatingGrass();
+
+ /**
+ * Sets if a horse is in their eating grass animation.
+ *
+ * <p>When true, the horse will lower its neck.</p>
+ *
+ * @param eating eating grass animation is active
+ * @deprecated use {@link #setEatingHaystack(boolean)}
2021-10-21 03:09:42 +02:00
+ */
+ @Deprecated
2021-10-21 03:09:42 +02:00
+ public void setEatingGrass(boolean eating);
+
+ /**
+ * Gets if a horse is in their rearing animation.
+ *
+ * @return rearing animation is active
+ */
+ public boolean isRearing();
+
+ /**
+ * Sets if a horse is in their rearing animation.
+ *
+ * <p>When true, the horse will stand on its hind legs.</p>
+ *
+ * @param rearing rearing animation is active
+ */
+ public void setRearing(boolean rearing);
+
+ /**
+ * Gets if a horse is in their eating animation.
+ *
+ * @return eating animation is active
+ */
+ public boolean isEating();
+
+ /**
+ * Sets if a horse is in their eating animation.
+ *
+ * <p>When true, the horse will bob its head.</p>
+ *
+ * @param eating eating animation is active
+ */
+ public void setEating(boolean eating);
+ // Paper end - Horse API
}
2022-03-19 15:30:16 +01:00
diff --git a/src/main/java/org/bukkit/entity/Bee.java b/src/main/java/org/bukkit/entity/Bee.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Bee.java
+++ b/src/main/java/org/bukkit/entity/Bee.java
@@ -0,0 +0,0 @@ public interface Bee extends Animals {
* @param ticks Ticks the bee cannot enter a hive for
*/
void setCannotEnterHiveTicks(int ticks);
+
+ // Paper start
+ /**
+ * Sets the override for if the bee is currently rolling.
+ *
+ * @param rolling is rolling, or unset for vanilla behavior
+ */
+ void setRollingOverride(@org.jetbrains.annotations.NotNull net.kyori.adventure.util.TriState rolling);
+
+ /**
+ * Gets the plugin set override for if the bee is currently rolling.
+ *
+ * @return plugin set rolling override
+ */
+ @org.jetbrains.annotations.NotNull
+ net.kyori.adventure.util.TriState getRollingOverride();
+
+ /**
+ * Gets if the bee is currently rolling.
+ *
+ * @return is rolling
+ */
+ boolean isRolling();
+ // Paper end
}
2021-08-27 20:16:41 +02:00
diff --git a/src/main/java/org/bukkit/entity/Cat.java b/src/main/java/org/bukkit/entity/Cat.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Cat.java
+++ b/src/main/java/org/bukkit/entity/Cat.java
@@ -0,0 +0,0 @@ public interface Cat extends Tameable, Sittable {
JELLIE,
ALL_BLACK;
}
+
+ // Paper Start - More cat api
+ /**
+ * Sets if the cat is lying down.
+ * This is visual and does not affect the behaviour of the cat.
+ *
+ * @param lyingDown whether the cat should lie down
+ */
+ public void setLyingDown(boolean lyingDown);
+
+ /**
+ * Gets if the cat is lying down.
+ *
+ * @return whether the cat is lying down
+ */
+ public boolean isLyingDown();
+
+ /**
+ * Sets if the cat has its head up.
+ * This is visual and does not affect the behaviour of the cat.
+ *
+ * @param headUp head is up
+ */
+ public void setHeadUp(boolean headUp);
+
+ /**
+ * Gets if the cat has its head up.
+ *
+ * @return head is up
+ */
+ public boolean isHeadUp();
+ // Paper End - More cat api
}
2022-03-11 15:24:45 +01:00
diff --git a/src/main/java/org/bukkit/entity/Enderman.java b/src/main/java/org/bukkit/entity/Enderman.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Enderman.java
+++ b/src/main/java/org/bukkit/entity/Enderman.java
@@ -0,0 +0,0 @@ public interface Enderman extends Monster {
* @param blockData data to set the carried block to, or null to remove
*/
public void setCarriedBlock(@Nullable BlockData blockData);
+
+ // Paper start
+ /**
+ * Returns whether the enderman is screaming/angry.
+ *
+ * @return whether the enderman is screaming
+ */
+ boolean isScreaming();
+
+ /**
+ * Sets whether the enderman is screaming/angry.
+ *
+ * @param screaming whether the enderman is screaming
+ */
+ void setScreaming(boolean screaming);
+
+ /**
+ * Returns whether the enderman has been stared at.
+ * If set to true, players will hear an ambient sound.
+ *
+ * @return whether the enderman has been stared at
+ */
+ boolean hasBeenStaredAt();
+
+ /**
+ * Sets whether the enderman has been stared at.
+ * If set to true, players will hear an ambient sound.
+ *
+ * @param hasBeenStaredAt whether the enderman has been stared at
+ */
+ void setHasBeenStaredAt(boolean hasBeenStaredAt);
+ // Paper end
}
2021-06-22 09:44:02 +02:00
diff --git a/src/main/java/org/bukkit/entity/Fox.java b/src/main/java/org/bukkit/entity/Fox.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Fox.java
+++ b/src/main/java/org/bukkit/entity/Fox.java
@@ -0,0 +0,0 @@ public interface Fox extends Animals, Sittable {
RED,
SNOW;
}
+
+ // Paper start - Add more fox behavior API
+ /**
+ * Sets if the fox is interested.
+ *
+ * @param interested is interested
+ */
+ public void setInterested(boolean interested);
+
+ /**
+ * Gets if the fox is interested.
+ *
+ * @return fox is interested
+ */
+ public boolean isInterested();
+
+ /**
+ * Sets if the fox is leaping.
+ *
+ * @param leaping is leaping
+ */
+ public void setLeaping(boolean leaping);
+
+ /**
+ * Gets if the fox is leaping.
+ *
+ * @return fox is leaping
+ */
+ public boolean isLeaping();
+
+ /**
+ * Sets if the fox is defending.
+ *
+ * @param defending is defending
+ */
+ public void setDefending(boolean defending);
+
+ /**
+ * Gets if the fox is defending.
+ *
+ * @return fox is defending
+ */
+ public boolean isDefending();
+
+ /**
+ * Sets if the fox face planted.
+ *
+ * @param faceplanted face planted
+ */
+ public void setFaceplanted(boolean faceplanted);
+ // Paper end - Add more fox behavior API
}
2022-03-06 22:20:38 +01:00
diff --git a/src/main/java/org/bukkit/entity/Ghast.java b/src/main/java/org/bukkit/entity/Ghast.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Ghast.java
+++ b/src/main/java/org/bukkit/entity/Ghast.java
@@ -0,0 +0,0 @@ public interface Ghast extends Flying {
* @param flag Whether the Ghast is charging
*/
void setCharging(boolean flag);
2022-03-06 22:20:38 +01:00
+
+ // Paper start
2022-03-06 22:20:38 +01:00
+ /**
+ * Returns the explosion power of shot fireballs.
+ *
+ * @return explosion power of shot fireballs
+ */
+ int getExplosionPower();
+
+ /**
+ * Sets the explosion power of shot fireballs.
+ *
+ * @param explosionPower explosion power of shot fireballs
+ * @throws IllegalArgumentException if the explosion power is less than 0 or greater than 127
+ */
+ void setExplosionPower(int explosionPower);
+ // Paper end
}
2022-01-18 00:23:44 +01:00
diff --git a/src/main/java/org/bukkit/entity/Panda.java b/src/main/java/org/bukkit/entity/Panda.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Panda.java
+++ b/src/main/java/org/bukkit/entity/Panda.java
@@ -0,0 +0,0 @@ public interface Panda extends Animals, Sittable {
*/
int getUnhappyTicks();
2022-02-12 14:36:41 +01:00
2022-01-18 00:23:44 +01:00
+ // Paper start - Panda API
+ /**
+ * Sets the sneeze progress in this animation.
+ * This value counts up only if {@link Panda#isSneezing()} is true
+ *
+ * @param ticks sneeze progress
+ */
+ void setSneezeTicks(int ticks);
+
+ /**
+ * Gets the current sneeze progress, or how many ticks this panda will sneeze for.
+ *
+ * @return sneeze progress
+ */
+ int getSneezeTicks();
+
+ /**
+ * Sets the eating ticks for this panda.
+ * <p>
+ *
+ * This starts counting up as long as it is greater than 0.
+ *
+ * @param ticks eating ticks
+ */
+ void setEatingTicks(int ticks);
+
+ /**
+ * Gets the current eating progress, or how many ticks this panda has been eating for.
+ *
+ * @return eating progress
+ */
+ int getEatingTicks();
+
+ /**
+ * Sets the number of ticks this panda will be unhappy for.
+ * <p>
+ * This value counts down.
+ *
+ * @param ticks unhappy ticks
+ */
+ void setUnhappyTicks(int ticks);
+
+ /**
+ * Sets if this panda is currently on its back.
+ *
+ * @param onBack is on its back
+ * @deprecated use {@link #setOnBack(boolean)}
2022-01-18 00:23:44 +01:00
+ */
+ @Deprecated(forRemoval = true)
+ default void setIsOnBack(boolean onBack) {
+ this.setOnBack(onBack);
+ }
2022-01-18 00:23:44 +01:00
+
+ /**
+ * Sets if this panda is currently sitting.
+ *
+ * @param sitting is currently sitting
2022-02-12 14:36:41 +01:00
+ * @deprecated use {@link #setSitting(boolean)}
2022-01-18 00:23:44 +01:00
+ */
2022-02-12 14:36:41 +01:00
+ @Deprecated(forRemoval = true)
+ default void setIsSitting(boolean sitting) {
+ this.setSitting(sitting);
+ }
+
+ /**
+ * Sets if this panda is currently sitting.
+ *
+ * @param sitting is currently sitting
+ */
+ @Override
+ void setSitting(boolean sitting);
2022-01-18 00:23:44 +01:00
+
+ /**
+ * Gets if this panda is sitting.
+ *
+ * @return is sitting
+ */
2022-02-12 14:36:41 +01:00
+ @Override
2022-01-18 00:23:44 +01:00
+ boolean isSitting();
+ // Paper end - Panda API
+
public enum Gene {
NORMAL(false),
2022-03-19 15:30:16 +01:00
diff --git a/src/main/java/org/bukkit/entity/Piglin.java b/src/main/java/org/bukkit/entity/Piglin.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Piglin.java
+++ b/src/main/java/org/bukkit/entity/Piglin.java
@@ -0,0 +0,0 @@ public interface Piglin extends PiglinAbstract, InventoryHolder, com.destroystok
*/
@NotNull
public Set<Material> getBarterList();
+
+ // Paper start
+ /**
+ * Causes the piglin to appear as if they are charging
+ * a crossbow.
+ * <p>
+ * This works with any item currently held in the piglin's hand.
+ *
+ * @param chargingCrossbow is charging
+ */
+ void setChargingCrossbow(boolean chargingCrossbow);
+
+ /**
+ * Gets if the piglin is currently charging the
+ * item in their hand.
+ *
+ * @return is charging
+ */
+ boolean isChargingCrossbow();
+ // Paper end
+
}
2022-03-11 15:24:45 +01:00
diff --git a/src/main/java/org/bukkit/entity/PolarBear.java b/src/main/java/org/bukkit/entity/PolarBear.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/PolarBear.java
+++ b/src/main/java/org/bukkit/entity/PolarBear.java
@@ -0,0 +0,0 @@ package org.bukkit.entity;
/**
* Represents a polar bear.
*/
-public interface PolarBear extends Animals {}
+// Paper start
+public interface PolarBear extends Animals {
+
+ /**
+ * Returns whether the polar bear is standing.
+ *
+ * @return whether the polar bear is standing
+ */
+ boolean isStanding();
+
+ /**
+ * Sets whether the polar bear is standing.
+ *
+ * @param standing whether the polar bear should be standing
+ */
+ void setStanding(boolean standing);
+}
+// Paper end
diff --git a/src/main/java/org/bukkit/entity/Raider.java b/src/main/java/org/bukkit/entity/Raider.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Raider.java
+++ b/src/main/java/org/bukkit/entity/Raider.java
@@ -0,0 +0,0 @@ public interface Raider extends Monster {
*/
@NotNull
Sound getCelebrationSound();
2022-03-11 15:24:45 +01:00
+
+ // Paper start
+ /**
+ * Returns whether the raider is celebrating a raid victory.
+ *
+ * @return whether the raider is celebrating a raid victory
+ */
+ boolean isCelebrating();
+
+ /**
+ * Sets whether the raider is celebrating a raid victory.
+ *
+ * @param celebrating whether the raider is celebrating a raid victory
+ */
+ void setCelebrating(boolean celebrating);
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/entity/Trident.java b/src/main/java/org/bukkit/entity/Trident.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Trident.java
+++ b/src/main/java/org/bukkit/entity/Trident.java
@@ -0,0 +0,0 @@ package org.bukkit.entity;
/**
* Represents a thrown trident.
*/
-public interface Trident extends AbstractArrow, ThrowableProjectile { }
+// Paper start
+public interface Trident extends AbstractArrow, ThrowableProjectile {
+
+ /**
+ * Returns whether the trident has an enchanted glow.
+ * This can be separate from the underlying item having any enchantments.
+ *
+ * @return whether the trident has an enchanted glow
+ */
+ boolean hasGlint();
+
+ /**
+ * Sets whether the trident has an enchanted glow.
+ * This is separate from the underlying item having any enchantments.
+ *
+ * @param glint whether the trident should have an enchanted glow
+ */
+ void setGlint(boolean glint);
+
+ /**
+ * Returns the loyalty level of the trident.
+ * This can be separate from the underlying item's enchantments.
+ *
+ * @return loyalty level of the trident
+ */
+ int getLoyaltyLevel();
+
+ /**
+ * Sets the loyalty level of the trident.
+ * This is separate from the underlying item's enchantments.
+ *
+ * @param loyaltyLevel loyalty level
+ * @throws IllegalArgumentException if the loyalty level is lower than 0 or greater than 127
+ */
+ void setLoyaltyLevel(int loyaltyLevel);
+}
+// Paper end
2022-03-19 15:30:16 +01:00
diff --git a/src/main/java/org/bukkit/entity/Vex.java b/src/main/java/org/bukkit/entity/Vex.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Vex.java
+++ b/src/main/java/org/bukkit/entity/Vex.java
@@ -0,0 +0,0 @@ public interface Vex extends Monster {
* Gets the remaining lifespan of this entity.
*
* @return life in ticks
+ * @deprecated This API duplicates existing API which uses the more
+ * preferable name due to mirroring internals better
*/
+ @Deprecated
int getLifeTicks();
/**
* Sets the remaining lifespan of this entity.
*
* @param lifeTicks life in ticks, or negative for unlimited lifepan
+ * @deprecated This API duplicates existing API which uses the more
+ * preferable name due to mirroring internals better
*/
+ @Deprecated
void setLifeTicks(int lifeTicks);
/**
* Gets if the entity has a limited life.
*
* @return true if the entity has limited life
+ * @deprecated This API duplicates existing API which uses the more
+ * preferable name due to mirroring internals better
*/
+ @Deprecated
boolean hasLimitedLife();
// Paper start
2022-03-19 15:30:16 +01:00
@@ -0,0 +0,0 @@ public interface Vex extends Monster {
* @param summoner New summoner
*/
void setSummoner(@Nullable Mob summoner);
+
+ /**
+ * Gets if this vex should start to take damage
+ * once {@link Vex#getLimitedLifetimeTicks()} is less than or equal to 0.
+ *
+ * @return will take damage
+ */
+ boolean hasLimitedLifetime();
+
+ /**
+ * Sets if this vex should start to take damage
+ * once {@link Vex#getLimitedLifetimeTicks()} is less than or equal to 0.
+ *
+ * @param hasLimitedLifetime should take damage
+ */
+ void setLimitedLifetime(boolean hasLimitedLifetime);
+
+ /**
+ * Gets the number of ticks remaining until the vex will start
+ * to take damage.
+ *
+ * @return ticks until the vex will start to take damage
+ */
+ int getLimitedLifetimeTicks();
+
+ /**
+ * Sets the number of ticks remaining until the vex takes damage.
+ * This number is ticked down only if {@link Vex#hasLimitedLifetime()} is true.
+ *
+ * @param ticks ticks remaining
+ */
+ void setLimitedLifetimeTicks(int ticks);
// Paper end
}
diff --git a/src/main/java/org/bukkit/entity/Warden.java b/src/main/java/org/bukkit/entity/Warden.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Warden.java
+++ b/src/main/java/org/bukkit/entity/Warden.java
@@ -0,0 +0,0 @@ public interface Warden extends Monster {
*/
int getAnger(@NotNull Entity entity);
+ // Paper start
+ /**
+ * Gets the highest anger level of this warden.
+ * <p>
+ * Anger is an integer from 0 to 150. Once a Warden reaches 80 anger at a
+ * target it will actively pursue it.
+ *
+ * @return highest anger level
+ */
+ int getHighestAnger();
+ // Paper end
+
/**
* Increases the anger level of this warden.
*
2022-03-11 15:24:45 +01:00
diff --git a/src/main/java/org/bukkit/entity/Wither.java b/src/main/java/org/bukkit/entity/Wither.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Wither.java
+++ b/src/main/java/org/bukkit/entity/Wither.java
@@ -0,0 +0,0 @@ public interface Wither extends Monster, Boss, com.destroystokyo.paper.entity.Ra
LEFT,
RIGHT
}
+
2022-03-11 15:24:45 +01:00
+ // Paper start
+ /**
+ * @return whether the wither is charged
+ */
+ boolean isCharged();
+
+ /**
+ * @return ticks the wither is invulnerable for
+ */
+ int getInvulnerableTicks();
+
+ /**
+ * Sets for how long in the future, the wither should be invulnerable.
+ *
+ * @param ticks ticks the wither is invulnerable for
+ */
+ void setInvulnerableTicks(int ticks);
+
+ /**
+ * @return whether the wither can travel through portals
+ */
+ boolean canTravelThroughPortals();
+
+ /**
+ * Sets whether the wither can travel through portals.
+ *
+ * @param value whether the wither can travel through portals
+ */
+ void setCanTravelThroughPortals(boolean value);
2022-03-19 15:30:16 +01:00
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/entity/ZombieVillager.java b/src/main/java/org/bukkit/entity/ZombieVillager.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/ZombieVillager.java
+++ b/src/main/java/org/bukkit/entity/ZombieVillager.java
@@ -0,0 +0,0 @@ public interface ZombieVillager extends Zombie {
* @param conversionPlayer the player
*/
void setConversionPlayer(@Nullable OfflinePlayer conversionPlayer);
+
+ // Paper start - missing entity behaviour api - converting without entity event
+ /**
+ * Sets the amount of ticks until this entity will be converted to a
+ * Villager as a result of being cured.
+ * <p>
+ * When this reaches 0, the entity will be converted. A value of less than 0
+ * will stop the current conversion process without converting the current
+ * entity.
+ *
+ * @param time new conversion time
+ * @param broadcastEntityEvent whether this conversion time mutation should broadcast the
+ * org.bukkit.{@link org.bukkit.EntityEffect#ZOMBIE_TRANSFORM} entity event to the
+ * world. If false, no entity event is published, preventing for example the
+ * org.bukkit.{@link org.bukkit.Sound#ENTITY_ZOMBIE_VILLAGER_CURE} from playing.
+ */
+ void setConversionTime(int time, boolean broadcastEntityEvent);
+ // Paper stop - missing entity behaviour api - converting without entity event
}