Missing Entity API

Co-authored-by: Nassim Jahnke <nassim@njahnke.dev>
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
Co-authored-by: William Blake Galbreath <blake.galbreath@gmail.com>
Co-authored-by: SoSeDiK <mrsosedik@gmail.com>
Co-authored-by: booky10 <boooky10@gmail.com>
Co-authored-by: Amin <amin.haddou@frg.wwschool.de>
Co-authored-by: TrollyLoki <trollyloki@gmail.com>
Co-authored-by: FireInstall <kettnerl@hu-berlin.de>
Co-authored-by: maxcom1 <46265094+maxcom1@users.noreply.github.com>
Co-authored-by: TotalledZebra <Holappa57@gmail.com>
This commit is contained in:
Owen1212055 2021-05-28 21:06:59 -04:00
parent fb8f31e8e3
commit a2a581ba6b
37 changed files with 1089 additions and 7 deletions

View file

@ -0,0 +1,47 @@
package io.papermc.paper.entity;
import org.bukkit.entity.Fish;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
/**
* Represents a fish that can school with other fish.
*/
@NullMarked
public interface SchoolableFish extends Fish {
/**
* Forces this fish to follow the given fish.
*
* @param leader fish to follow
*/
void startFollowing(SchoolableFish leader);
/**
* Causes the fish to stop following their current
* leader.
*/
void stopFollowing();
/**
* Gets the amount of fish currently following this fish.
*
* @return school size
*/
int getSchoolSize();
/**
* Gets the maximum number of fish that will naturally follow this fish.
*
* @return max school size
*/
int getMaxSchoolSize();
/**
* Gets the fish that this entity is currently following.
*
* @return following fish
*/
@Nullable SchoolableFish getSchoolLeader();
}

View file

@ -106,17 +106,71 @@ public interface AbstractHorse extends Vehicle, InventoryHolder, Tameable {
* Gets whether the horse is currently grazing hay.
*
* @return true if eating hay
* @deprecated use {@link #isEatingGrass()}, this name is incorrect
*/
@Deprecated // Paper - Horse API
boolean isEatingHaystack();
/**
* Sets whether the horse is grazing hay.
*
* @param eatingHaystack new hay grazing status
* @deprecated use {@link #setEatingGrass(boolean)}, this name is incorrect
*/
@Deprecated // Paper - Horse API
void setEatingHaystack(boolean eatingHaystack);
@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
*/
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
*/
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
}

View file

@ -259,4 +259,20 @@ public interface AreaEffectCloud extends Entity {
* @param source the {@link ProjectileSource} that threw the LingeringPotion
*/
public void setSource(@Nullable ProjectileSource source);
// Paper start - owner API
/**
* Get the entity UUID for the owner of this area effect cloud.
*
* @return the entity owner uuid or null
*/
@Nullable java.util.UUID getOwnerUniqueId();
/**
* Sets the entity UUID for the owner of this area effect cloud.
*
* @param ownerUuid the entity owner uuid or null to clear
*/
void setOwnerUniqueId(@Nullable java.util.UUID ownerUuid);
// Paper end
}

View file

@ -24,4 +24,23 @@ public interface Bat extends Ambient {
* @param state the new state
*/
void setAwake(boolean state);
// Paper start
/**
* Gets the location that this bat is currently trying to move towards.
*
* @return target location, or null if it's going to find a new location
*/
@org.jetbrains.annotations.Nullable
org.bukkit.Location getTargetLocation();
/**
* Sets the location that this bat is currently trying to move towards.
* <p>
* This can be set to null to cause the bat to recalculate its target location
*
* @param location location to move towards (world is ignored, will always use the entity's world)
*/
void setTargetLocation(@org.jetbrains.annotations.Nullable org.bukkit.Location location);
// Paper end
}

View file

@ -93,4 +93,56 @@ 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();
/**
* Sets how many crops this bee has grown since it last
* pollinated.
* @param crops number of crops
*/
void setCropsGrownSincePollination(int crops);
/**
* Gets how many crops this bee has grown since it last
* pollinated.
* @return number of crops
*/
int getCropsGrownSincePollination();
/**
* Sets how many ticks this bee has gone without pollinating.
*
* @param ticks number of ticks
*/
void setTicksSincePollination(int ticks);
/**
* Gets how many ticks this bee has gone without pollinating
*
* @return number of ticks
*/
int getTicksSincePollination();
// Paper end
}

View file

@ -7,4 +7,18 @@ import org.jetbrains.annotations.ApiStatus;
*/
@ApiStatus.Experimental
public interface Bogged extends AbstractSkeleton, Shearable {
/**
* Gets whether the bogged is in its sheared state.
*
* @return Whether the bogged is sheared.
*/
boolean isSheared();
/**
* Sets whether the bogged is in its sheared state.
*
* @param flag Whether to shear the bogged
*/
void setSheared(boolean flag);
}

View file

@ -90,4 +90,36 @@ public interface Cat extends Tameable, Sittable {
return Lists.newArrayList(Registry.CAT_VARIANT).toArray(new Type[0]);
}
}
// 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
}

View file

@ -3,4 +3,35 @@ package org.bukkit.entity;
/**
* Represents a Chicken.
*/
public interface Chicken extends Animals {}
// Paper start
public interface Chicken extends Animals {
/**
* Gets if this chicken was spawned as a chicken jockey.
*
* @return is chicken jockey
*/
boolean isChickenJockey();
/**
* Sets if this chicken was spawned as a chicken jockey.
*
* @param isChickenJockey is chicken jockey
*/
void setIsChickenJockey(boolean isChickenJockey);
/**
* Gets the number of ticks till this chicken lays an egg.
*
* @return ticks till the chicken lays an egg
*/
int getEggLayTime();
/**
* Sets the number of ticks till this chicken lays an egg.
*
* @param eggLayTime ticks till the chicken lays an egg
*/
void setEggLayTime(int eggLayTime);
}
// Paper end

View file

@ -4,4 +4,4 @@ package org.bukkit.entity;
/**
* Represents a cod fish.
*/
public interface Cod extends Fish { }
public interface Cod extends io.papermc.paper.entity.SchoolableFish { } // Paper - Schooling Fish API

View file

@ -53,6 +53,25 @@ public interface Damageable extends Entity {
*/
void setHealth(double health);
// Paper start - entity heal API
/**
* Heal this entity by the given amount. This will call {@link org.bukkit.event.entity.EntityRegainHealthEvent}.
*
* @param amount heal amount
*/
default void heal(final double amount) {
this.heal(amount, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.CUSTOM);
}
/**
* Heal this entity by the given amount. This will call {@link org.bukkit.event.entity.EntityRegainHealthEvent}.
*
* @param amount heal amount
* @param reason heal reason
*/
void heal(double amount, @NotNull org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason reason);
// Paper end - entity heal API
/**
* Gets the entity's absorption amount.
*

View file

@ -86,4 +86,36 @@ public interface Enderman extends Monster {
* @return true if the teleport succeeded.
*/
public boolean teleportTowards(@NotNull Entity entity);
// 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
}

View file

@ -23,4 +23,22 @@ public interface Endermite extends Monster {
*/
@Deprecated(since = "1.17")
void setPlayerSpawned(boolean playerSpawned);
// Paper start
/**
* Sets how many ticks this endermite has been living for.
* If this value is greater than 2400, this endermite will despawn.
*
* @param ticks lifetime ticks
*/
void setLifetimeTicks(int ticks);
/**
* Gets how long this endermite has been living for.
* This value will tick up while {@link LivingEntity#getRemoveWhenFarAway()} is false.
* If this value is greater than 2400, this endermite will despawn.
*
* @return lifetime ticks
*/
int getLifetimeTicks();
// Paper end
}

View file

@ -293,6 +293,40 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
*/
boolean isFrozen();
// Paper start - missing entity api
/**
* Sets whether the entity is invisible or not.
* <p>
* This setting is undefined for non-living entities like boats or paintings.
* Non-living entities that are marked as invisible through this method may e.g. only hide their shadow.
* To hide such entities from players completely, see {@link Player#hideEntity(org.bukkit.plugin.Plugin, Entity)}.
*
* @param invisible If the entity is invisible
*/
void setInvisible(boolean invisible); // Paper - moved up from LivingEntity
/**
* Gets whether the entity is invisible or not.
*
* @return Whether the entity is invisible
*/
boolean isInvisible(); // Paper - moved up from LivingEntity
/**
* Sets this entities no physics status.
*
* @param noPhysics boolean indicating if the entity should not have physics.
*/
void setNoPhysics(boolean noPhysics);
/**
* Gets if this entity has no physics.
*
* @return true if the entity does not have physics.
*/
boolean hasNoPhysics();
// Paper end - missing entity api
/**
* Mark the entity's removal.
*

View file

@ -62,4 +62,25 @@ public interface Fireball extends Projectile, Explosive {
*/
@NotNull
Vector getAcceleration();
// Paper start - Expose power on fireball projectiles
/**
* Sets the power of a fireball. The power determines the direction and magnitude of its acceleration.
*
* @param power the power
* @deprecated use #setAcceleration(Vector) instead.
*/
@Deprecated
public void setPower(@NotNull Vector power);
/**
* Gets the power of a fireball. The power determines the direction and magnitude of its acceleration.
*
* @return the power
* @deprecated Use #getAcceleration instead.
*/
@Deprecated
@NotNull
public Vector getPower();
// Paper end - Expose power on fireball projectiles
}

View file

@ -92,4 +92,55 @@ 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
}

View file

@ -18,4 +18,21 @@ public interface Ghast extends Flying, Enemy {
* @param flag Whether the Ghast is charging
*/
void setCharging(boolean flag);
// Paper start
/**
* 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
}

View file

@ -1004,6 +1004,7 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
*
* @param invisible If the entity is invisible
*/
@Override // Paper - move invisibility up to Entity
public void setInvisible(boolean invisible);
/**
@ -1011,6 +1012,7 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
*
* @return Whether the entity is invisible
*/
@Override // Paper - move invisibility up to Entity
public boolean isInvisible();
// Paper start
@ -1047,6 +1049,57 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
void setShieldBlockingDelay(int delay);
// Paper end
// Paper start - missing entity API
/**
* Retrieves the sideways movement direction of the entity.
* <p>
* The returned value ranges from -1 to 1, where:
* - Positive 1 represents movement to the left.
* - Negative 1 represents movement to the right.
* <p>
* Please note that for entities of type {@link Player}, this value is updated only when riding another entity.
* <p>
* This method specifically provides information about the entity's sideways movement, whereas {@link #getVelocity()} returns
* a vector representing the entity's overall current momentum.
*
* @return Sideways movement direction, ranging from -1 (right) to 1 (left).
*/
float getSidewaysMovement();
/**
* Retrieves the upwards movement direction of the entity.
* <p>
* The returned value ranges from -1 to 1, where:
* - Positive 1 represents upward movement.
* - Negative 1 represents downward movement.
* <p>
* Please note that for entities of type {@link Player}, this value is never updated.
* <p>
* This method specifically provides information about the entity's vertical movement,
* whereas {@link #getVelocity()} returns a vector representing the entity's overall
* current momentum.
*
* @return Upwards movement direction, ranging from -1 (downward) to 1 (upward).
*/
float getUpwardsMovement();
/**
* Retrieves the forwards movement direction of the entity.
* <p>
* The returned value ranges from -1 to 1, where:
* - Positive 1 represents movement forwards.
* - Negative 1 represents movement backwards.
* <p>
* Please note that for entities of type {@link Player}, this value is updated only when riding another entity.
* <p>
* This method specifically provides information about the entity's forward and backward movement,
* whereas {@link #getVelocity()} returns a vector representing the entity's overall current momentum.
*
* @return Forwards movement direction, ranging from -1 (backward) to 1 (forward).
*/
float getForwardsMovement();
// Paper end - missing entity API
// Paper start - active item API
/**
* Starts using the item in the specified hand, making it the

View file

@ -67,4 +67,56 @@ public interface Llama extends ChestedHorse, RangedEntity { // Paper
@NotNull
@Override
LlamaInventory getInventory();
// Paper start
/**
* Checks if this llama is in a caravan.
* This means that this llama is currently following
* another llama.
*
* @return is in caravan
*/
boolean inCaravan();
/**
* Joins a caravan, with the provided llama being the leader
* of the caravan.
* This llama will then follow the provided llama.
*
* @param llama head of caravan to join
*/
void joinCaravan(@NotNull Llama llama);
/**
* Leaves the current caravan that they are in.
*/
void leaveCaravan();
/**
* Get the llama that this llama is following.
* <p>
* Does not necessarily mean the leader of the entire caravan.
*
* @return the llama currently being followed
*/
@org.jetbrains.annotations.Nullable
Llama getCaravanHead();
/**
* Checks if another llama is currently following behind
* this llama.
*
* @return true if being followed in the caravan
*/
boolean hasCaravanTail();
/**
* Gets the llama that is currently following behind
* this llama.
*
* @return the llama following this llama, or null if none is following them
*/
@org.jetbrains.annotations.Nullable
Llama getCaravanTail();
// Paper end
}

View file

@ -170,4 +170,38 @@ public interface Mob extends LivingEntity, Lootable {
this.setSeed(seed);
}
// Paper end - LootTable API
// Paper start - Missing Entity API
/**
* Some mobs will raise their arm(s) when aggressive:
* <ul>
* <li>{@link Drowned}</li>
* <li>{@link Piglin}</li>
* <li>{@link Skeleton}</li>
* <li>{@link Zombie}</li>
* <li>{@link ZombieVillager}</li>
* <li>{@link Illusioner}</li>
* <li>{@link Vindicator}</li>
* <li>{@link Panda}</li>
* <li>{@link Pillager}</li>
* <li>{@link PiglinBrute}</li>
* </ul>
* <p>
* Note: This doesn't always show the actual aggressive state as
* set by {@link #setAggressive(boolean)}. {@link Panda}'s are always
* aggressive if their combined {@link Panda.Gene} is {@link Panda.Gene#AGGRESSIVE}.
*
* @return wether the mob is aggressive or not
*/
boolean isAggressive();
/**
* Some mobs will raise their arm(s) when aggressive,
* see {@link #isAggressive()} for full list.
*
* @param aggressive wether the mob should be aggressive or not
* @see #isAggressive()
*/
void setAggressive(boolean aggressive);
// Paper end - Missing Entity API
}

View file

@ -107,6 +107,98 @@ public interface Panda extends Animals, Sittable {
*/
int getUnhappyTicks();
// 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)}
*/
@Deprecated(forRemoval = true, since = "1.19")
default void setIsOnBack(boolean onBack) {
this.setOnBack(onBack);
}
/**
* Sets if this panda is currently sitting.
*
* @param sitting is currently sitting
* @deprecated use {@link #setSitting(boolean)}
*/
@Deprecated(forRemoval = true, since = "1.19")
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);
/**
* Gets if this panda is sitting.
*
* @return is sitting
*/
@Override
boolean isSitting();
/**
* Gets this Panda's combined gene.
* <p>
* The combined gene can be modified using
* {@link #setMainGene(Gene)} or {@link #setHiddenGene(Gene)}.
*
* @return combined gene
*/
@NotNull
Gene getCombinedGene();
// Paper end - Panda API
public enum Gene {
NORMAL(false),

View file

@ -40,5 +40,21 @@ public interface Phantom extends Flying, Enemy {
* @param shouldBurnInDay True to burn in sunlight
*/
public void setShouldBurnInDay(boolean shouldBurnInDay);
/**
* Gets the location that this phantom circles around when not attacking a player
* This will be changed after attacking a player.
*
* @return circling location
*/
@org.jetbrains.annotations.NotNull
org.bukkit.Location getAnchorLocation();
/**
* Sets the location that this phantom circles around when not attacking a player
*
* @param location circling location (world is ignored, will always use the entity's world)
*/
void setAnchorLocation(@org.jetbrains.annotations.NotNull org.bukkit.Location location);
// Paper end
}

View file

@ -90,4 +90,47 @@ 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();
/**
* Sets whether the Piglin is dancing or not
*
* @param dancing is dancing
*/
void setDancing(boolean dancing);
/**
* Causes the piglin to dance for a
* specified amount of time
*
* @param duration duration of the dance in ticks
*/
void setDancing(long duration);
/**
* Gets if the piglin is currently dancing
*
* @return is dancing
*/
boolean isDancing();
// Paper end
}

View file

@ -3,4 +3,22 @@ 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

View file

@ -14,6 +14,23 @@ public interface Rabbit extends Animals {
* @param type Sets the type of rabbit for this entity.
*/
public void setRabbitType(@NotNull Type type);
// Paper start
/**
* Sets how many ticks this rabbit will wait
* until trying to find more carrots.
*
* @param ticks ticks
*/
void setMoreCarrotTicks(int ticks);
/**
* Returns how many ticks this rabbit
* will wait until trying to find more carrots.
*
* @return ticks
*/
int getMoreCarrotTicks();
// Paper end
/**
* Represents the various types a Rabbit might be.

View file

@ -3,4 +3,61 @@ package org.bukkit.entity;
/**
* Illager beast.
*/
public interface Ravager extends Raider { }
// Paper start - Missing Entity Behavior
public interface Ravager extends Raider {
/**
* Gets how many ticks this ravager is attacking for.
* When attacking, the ravager cannot move.
*
* @return ticks attacking or -1 if they are currently not attacking
*/
int getAttackTicks();
/**
* Sets how many ticks this ravager is attacking for.
* When attacking, the ravager cannot move.
* This will tick down till it gets to -1, where this ravager will no longer be attacking.
*
* @param ticks ticks attacking or -1 if they should no longer be attacking
*/
void setAttackTicks(int ticks);
/**
* Gets how many ticks the ravager is stunned for.
* The ravager cannot move or attack while stunned.
* At 0, this will cause the ravager to roar.
*
* @return ticks stunned or -1 if they are currently not stunned
*/
int getStunnedTicks();
/**
* Sets how many ticks the ravager is stunned for.
* The ravager cannot move or attack while stunned.
* At 0, this will cause the ravager to roar.
*
* @param ticks ticks stunned or -1 if they should no longer be stunned
*/
void setStunnedTicks(int ticks);
/**
* Gets how many ticks the ravager is roaring for.
* While roaring, the ravager cannot move
*
* @return ticks roaring or -1 if they are currently not roaring
*/
int getRoarTicks();
/**
* Sets how many ticks the ravager is roaring for.
* While roaring, the ravager cannot move
* This will tick down till it gets to -1, where it is no longer active.
* If set to 11, this will play a sound and hurt nearby players.
*
* @param ticks ticks roaring or -1 if they should no longer be roaring
*/
void setRoarTicks(int ticks);
}
// Paper end

View file

@ -5,7 +5,7 @@ import org.jetbrains.annotations.NotNull;
/**
* Represents a salmon fish.
*/
public interface Salmon extends Fish {
public interface Salmon extends io.papermc.paper.entity.SchoolableFish { // Paper - Schooling Fish API
/**
* Get the variant of this salmon.

View file

@ -6,4 +6,18 @@ import org.bukkit.material.Colorable;
* Represents a Sheep.
*/
public interface Sheep extends Animals, Colorable, Shearable {
/**
* Gets whether the sheep is in its sheared state.
*
* @return Whether the sheep is sheared.
*/
boolean isSheared();
/**
* Sets whether the sheep is in its sheared state.
*
* @param flag Whether to shear the sheep
*/
void setSheared(boolean flag);
}

View file

@ -64,4 +64,26 @@ public interface TNTPrimed extends Explosive {
default org.bukkit.Location getSourceLoc() {
return this.getOrigin();
}
// Paper start
/**
* Sets the visual block data of this
* primed tnt.
* <br>
* The explosion of the tnt stays the
* same and is not affected by this change.
*
* @param data the visual block data
*/
void setBlockData(@org.jetbrains.annotations.NotNull org.bukkit.block.data.BlockData data);
/**
* Gets the visual block data of this
* primed tnt.
*
* @return the visual block data
*/
@org.jetbrains.annotations.NotNull
org.bukkit.block.data.BlockData getBlockData();
// Paper end
}

View file

@ -18,4 +18,21 @@ public interface Tadpole extends Fish {
* @param age New age
*/
public void setAge(int age);
// Paper start - Tadpole age lock api
/**
* Lock the age of the animal, setting this will prevent the animal from
* maturing.
*
* @param lock new lock
*/
void setAgeLock(boolean lock);
/**
* Gets the current agelock.
*
* @return the current agelock
*/
boolean getAgeLock();
// Paper end
}

View file

@ -3,4 +3,40 @@ 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

View file

@ -6,7 +6,7 @@ import org.jetbrains.annotations.NotNull;
/**
* Tropical fish.
*/
public interface TropicalFish extends Fish {
public interface TropicalFish extends io.papermc.paper.entity.SchoolableFish { // Paper - Schooling Fish API
/**
* Gets the color of the fish's pattern.

View file

@ -57,21 +57,30 @@ 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
@ -89,5 +98,37 @@ 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
}

View file

@ -53,5 +53,26 @@ public interface WanderingTrader extends AbstractVillager {
* @return whether the mob will drink
*/
public boolean canDrinkMilk();
/**
* Gets the location that this wandering trader is currently
* wandering towards.
* <p>
* This will return null if the wandering trader has finished
* wandering towards the given location.
*
* @return the location currently wandering towards, or null if not wandering
*/
@org.jetbrains.annotations.Nullable
org.bukkit.Location getWanderingTowards();
/**
* Sets the location that this wandering trader is currently wandering towards.
* <p>
* This can be set to null to prevent the wandering trader from wandering further.
*
* @param location location to wander towards (world is ignored, will always use the entity's world)
*/
void setWanderingTowards(@org.jetbrains.annotations.Nullable org.bukkit.Location location);
// Paper end
}

View file

@ -30,6 +30,18 @@ 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.
*

View file

@ -43,7 +43,9 @@ public interface Wither extends Monster, Boss, com.destroystokyo.paper.entity.Ra
* Returns the wither's current invulnerability ticks.
*
* @return amount of invulnerability ticks
* @deprecated Duplicate api, use {@link #getInvulnerableTicks()}
*/
@Deprecated(forRemoval = true) // Paper
int getInvulnerabilityTicks();
/**
@ -52,7 +54,9 @@ public interface Wither extends Monster, Boss, com.destroystokyo.paper.entity.Ra
* When invulnerability ticks reach 0, the wither will trigger an explosion.
*
* @param ticks amount of invulnerability ticks
* @deprecated Duplicate api, use {@link #setInvulnerableTicks(int)}
*/
@Deprecated(forRemoval = true) // Paper
void setInvulnerabilityTicks(int ticks);
/**
@ -64,4 +68,43 @@ public interface Wither extends Monster, Boss, com.destroystokyo.paper.entity.Ra
LEFT,
RIGHT
}
// 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);
/**
* Makes the wither invulnerable for 11 seconds and
* sets the health to one third of the max health.
* <br>
* This is called in vanilla directly after spawning the wither.
*/
void enterInvulnerabilityPhase();
// Paper end
}

View file

@ -90,4 +90,22 @@ 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 end - missing entity behaviour api - converting without entity event
}

View file

@ -24,4 +24,23 @@ public interface HopperMinecart extends Minecart, InventoryHolder, LootableEntit
* @param enabled new enabled state
*/
void setEnabled(boolean enabled);
// Paper start
/**
* Gets the number of ticks that this hopper minecart cannot pickup items up for.
*
* @return ticks left on cooldown
* @deprecated Hopper minecarts don't have cooldowns anymore
*/
@Deprecated(forRemoval = true, since = "1.19.4")
int getPickupCooldown();
/**
* Sets the number of ticks that this hopper minecart cannot pickup items for.
*
* @param cooldown cooldown length in ticks
* @deprecated Hopper minecarts don't have cooldowns anymore
*/
@Deprecated(forRemoval = true, since = "1.19.4")
void setPickupCooldown(int cooldown);
// Paper end
}