74 lines
3.1 KiB
Diff
74 lines
3.1 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Noah van der Aa <ndvdaa@gmail.com>
|
||
|
Date: Wed, 15 Sep 2021 20:40:51 +0200
|
||
|
Subject: [PATCH] Friction API
|
||
|
|
||
|
|
||
|
diff --git a/src/main/java/io/papermc/paper/entity/Frictional.java b/src/main/java/io/papermc/paper/entity/Frictional.java
|
||
|
new file mode 100644
|
||
|
index 0000000000000000000000000000000000000000..6eb88c664d873506372ad14075bfcbe42958126f
|
||
|
--- /dev/null
|
||
|
+++ b/src/main/java/io/papermc/paper/entity/Frictional.java
|
||
|
@@ -0,0 +1,35 @@
|
||
|
+package io.papermc.paper.entity;
|
||
|
+
|
||
|
+import net.kyori.adventure.util.TriState;
|
||
|
+import org.bukkit.entity.Entity;
|
||
|
+import org.jetbrains.annotations.NotNull;
|
||
|
+
|
||
|
+/**
|
||
|
+ * Represents an {@link Entity} that can experience friction with the air and ground.
|
||
|
+ */
|
||
|
+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
|
||
|
+ */
|
||
|
+ @NotNull
|
||
|
+ 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(@NotNull TriState state);
|
||
|
+
|
||
|
+}
|
||
|
diff --git a/src/main/java/org/bukkit/entity/Item.java b/src/main/java/org/bukkit/entity/Item.java
|
||
|
index d0bef15785493b512ff0f7414c1d58d38fead581..58017fce436cdbda255f7172fbdadb726d4b113c 100644
|
||
|
--- a/src/main/java/org/bukkit/entity/Item.java
|
||
|
+++ b/src/main/java/org/bukkit/entity/Item.java
|
||
|
@@ -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.
|
||
|
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
|
||
|
index f6cbada38ca48638e5ad0bd99d0b6ea65f6b02de..97336be470a9d545d93f78e683a793f328013ad8 100644
|
||
|
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
|
||
|
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
|
||
|
@@ -25,7 +25,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.
|