Friction API

This commit is contained in:
Noah van der Aa 2021-09-15 20:40:51 +02:00
parent 19743ae5dc
commit 0232bdcc50
4 changed files with 38 additions and 3 deletions

View file

@ -0,0 +1,35 @@
package io.papermc.paper.entity;
import net.kyori.adventure.util.TriState;
import org.bukkit.entity.Entity;
import org.jspecify.annotations.NullMarked;
/**
* Represents an {@link Entity} that can experience friction with the air and ground.
*/
@NullMarked
public interface Frictional {
/**
* Gets the friction state of this entity.
* When set to {@link TriState#TRUE}, the entity will always experience friction.
* When set to {@link TriState#FALSE}, the entity will never experience friction.
* When set to {@link TriState#NOT_SET}, the entity will fall back to Minecraft's default behaviour.
*
* @return the entity's friction state
*/
TriState getFrictionState();
/**
* Sets the friction state of this entity.
* When set to {@link TriState#TRUE}, the entity will always experience friction.
* When set to {@link TriState#FALSE}, the entity will never experience friction.
* When set to {@link TriState#NOT_SET}, the entity will fall back to Minecraft's default behaviour.
* <p>
* Please note that changing this value will do nothing for a player.
*
* @param state the new friction state to set for the entity
*/
void setFrictionState(TriState state);
}

View file

@ -8,7 +8,7 @@ import org.jetbrains.annotations.Nullable;
/**
* Represents a dropped item.
*/
public interface Item extends Entity {
public interface Item extends Entity, io.papermc.paper.entity.Frictional { // Paper
/**
* Gets the item stack associated with this item drop.

View file

@ -27,7 +27,7 @@ import org.jetbrains.annotations.Nullable;
/**
* Represents a living entity, such as a monster or player
*/
public interface LivingEntity extends Attributable, Damageable, ProjectileSource {
public interface LivingEntity extends Attributable, Damageable, ProjectileSource, io.papermc.paper.entity.Frictional { // Paper
/**
* Gets the height of the living entity's eyes above its Location.

View file

@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable;
/**
* Represents a minecart entity.
*/
public interface Minecart extends Vehicle {
public interface Minecart extends Vehicle, io.papermc.paper.entity.Frictional { // Paper
/**
* Sets a minecart's damage.