aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0389-Friction-API.patch
blob: 4488bf7b4108a04e740ccf01a917b5b51b596136 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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 ced419f8655bff72f0257b639d5f7d73afe3c2e2..bcc6ba95bd21c7972865838c636a03f50b6c1f1a 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 812ae3368f828b388d6fd05a94cd88f2d5db9fac..017a743c1445e2c859fef0ef962e656035af12bd 100644
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
@@ -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.