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);
}