aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMalfrador <[email protected]>2023-06-05 19:15:18 +0200
committerGitHub <[email protected]>2023-06-05 13:15:18 -0400
commit956062a5d51bc4735e280c0a48e37f2fddb73c34 (patch)
treefada90c48b10cc4fd801d667e8179389c42cadcc
parentd8d3bd70b03f47f081d19860391e4c8b0963a5ef (diff)
downloadPaper-956062a5d51bc4735e280c0a48e37f2fddb73c34.tar.gz
Paper-956062a5d51bc4735e280c0a48e37f2fddb73c34.zip
Add transient modifiers (#9244)
This allows adding modifiers as transient. Transient modifiers don't get saved with the NBT data. Vanilla itself uses transient modifiers for speed modifications like sprinting or powder snow. This just exposes it in the API.
-rw-r--r--patches/api/0417-Add-transient-modifier-API.patch27
-rw-r--r--patches/server/0986-Add-transient-modifier-API.patch41
2 files changed, 68 insertions, 0 deletions
diff --git a/patches/api/0417-Add-transient-modifier-API.patch b/patches/api/0417-Add-transient-modifier-API.patch
new file mode 100644
index 0000000000..a32e4c86a9
--- /dev/null
+++ b/patches/api/0417-Add-transient-modifier-API.patch
@@ -0,0 +1,27 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Malfrador <[email protected]>
+Date: Wed, 31 May 2023 21:25:01 +0200
+Subject: [PATCH] Add transient modifier API
+
+
+diff --git a/src/main/java/org/bukkit/attribute/AttributeInstance.java b/src/main/java/org/bukkit/attribute/AttributeInstance.java
+index f08ee26cc4d479e1bfc5264b8cbe721315de91f2..5513174ea545bb5b4fdc028cbaa4c1bb763e2c6d 100644
+--- a/src/main/java/org/bukkit/attribute/AttributeInstance.java
++++ b/src/main/java/org/bukkit/attribute/AttributeInstance.java
+@@ -46,6 +46,16 @@ public interface AttributeInstance {
+ */
+ void addModifier(@NotNull AttributeModifier modifier);
+
++ // Paper start - Transient modifier API
++ /**
++ * Add a transient modifier to this instance.
++ * Transient modifiers are not persisted (saved with the NBT data)
++ *
++ * @param modifier to add
++ */
++ void addTransientModifier(@NotNull AttributeModifier modifier);
++ // Paper end
++
+ /**
+ * Remove a modifier from this instance.
+ *
diff --git a/patches/server/0986-Add-transient-modifier-API.patch b/patches/server/0986-Add-transient-modifier-API.patch
new file mode 100644
index 0000000000..e3b704e242
--- /dev/null
+++ b/patches/server/0986-Add-transient-modifier-API.patch
@@ -0,0 +1,41 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Malfrador <[email protected]>
+Date: Wed, 31 May 2023 23:30:00 +0200
+Subject: [PATCH] Add transient modifier API
+
+
+diff --git a/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java b/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java
+index 12135ffeacd648f6bc4d7d327059ea1a7e8c79c4..52439f4b959c74027eb191a3af960c70beb978e8 100644
+--- a/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java
++++ b/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java
+@@ -23,6 +23,11 @@ public class UnmodifiableAttributeInstance extends CraftAttributeInstance {
+ throw new UnsupportedOperationException("Cannot modify default attributes");
+ }
+
++ @Override
++ public void addTransientModifier(AttributeModifier modifier) {
++ throw new UnsupportedOperationException("Cannot modify default attributes");
++ }
++
+ @Override
+ public void removeModifier(AttributeModifier modifier) {
+ throw new UnsupportedOperationException("Cannot modify default attributes");
+diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java
+index e828ef7df04de98628e59e93c0431ea0e10199f8..0029412b1242879deb898524001bb4cc7550fa78 100644
+--- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java
++++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java
+@@ -50,6 +50,14 @@ public class CraftAttributeInstance implements AttributeInstance {
+ this.handle.addPermanentModifier(CraftAttributeInstance.convert(modifier));
+ }
+
++ // Paper start - Transient modifier API
++ @Override
++ public void addTransientModifier(AttributeModifier modifier) {
++ Preconditions.checkArgument(modifier != null, "modifier");
++ this.handle.addTransientModifier(CraftAttributeInstance.convert(modifier));
++ }
++ // Paper end
++
+ @Override
+ public void removeModifier(AttributeModifier modifier) {
+ Preconditions.checkArgument(modifier != null, "modifier");