aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTamion <[email protected]>2023-11-05 00:24:06 +0100
committerGitHub <[email protected]>2023-11-04 16:24:06 -0700
commite289accb0375eed492d65e019c287d1d3b1a3fcf (patch)
tree794b1a22a4d03351ab5a6dc8420372b0fcb30a49
parent2553f30153b4f8858456ddff8a4b713938fea1cd (diff)
downloadPaper-e289accb0375eed492d65e019c287d1d3b1a3fcf.tar.gz
Paper-e289accb0375eed492d65e019c287d1d3b1a3fcf.zip
Add more API to LingeringPotionSplashEvent (#9901)
* Add createAreaEffectCloud API * Add missing NotNull * Add missing Paper comments * Better solution * Better naming * New patch and rename * rename patch
-rw-r--r--patches/api/0445-Expand-LingeringPotion-API.patch45
-rw-r--r--patches/server/1045-Expand-LingeringPotion-API.patch19
2 files changed, 64 insertions, 0 deletions
diff --git a/patches/api/0445-Expand-LingeringPotion-API.patch b/patches/api/0445-Expand-LingeringPotion-API.patch
new file mode 100644
index 0000000000..40b5a5f547
--- /dev/null
+++ b/patches/api/0445-Expand-LingeringPotion-API.patch
@@ -0,0 +1,45 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Tamion <[email protected]>
+Date: Sat, 4 Nov 2023 23:56:23 +0100
+Subject: [PATCH] Expand LingeringPotion API
+
+
+diff --git a/src/main/java/org/bukkit/event/entity/LingeringPotionSplashEvent.java b/src/main/java/org/bukkit/event/entity/LingeringPotionSplashEvent.java
+index 1584c6c41c3ca51b8ab7f48efb140b0fe31f535b..34efe59493729449fe1316ab8f2f7211acf679be 100644
+--- a/src/main/java/org/bukkit/event/entity/LingeringPotionSplashEvent.java
++++ b/src/main/java/org/bukkit/event/entity/LingeringPotionSplashEvent.java
+@@ -17,6 +17,7 @@ public class LingeringPotionSplashEvent extends ProjectileHitEvent implements Ca
+ private static final HandlerList handlers = new HandlerList();
+ private boolean cancelled;
+ private final AreaEffectCloud entity;
++ private boolean allowEmptyAreaEffectCreation; // Paper
+
+ @Deprecated
+ public LingeringPotionSplashEvent(@NotNull final ThrownPotion potion, @NotNull final AreaEffectCloud entity) {
+@@ -44,6 +45,26 @@ public class LingeringPotionSplashEvent extends ProjectileHitEvent implements Ca
+ return entity;
+ }
+
++ // Paper start
++ /**
++ * Sets if an Empty AreaEffectCloud may be created
++ *
++ * @param allowEmptyAreaEffectCreation If an Empty AreaEffectCloud may be created
++ */
++ public void allowsEmptyCreation(boolean allowEmptyAreaEffectCreation) {
++ this.allowEmptyAreaEffectCreation = allowEmptyAreaEffectCreation;
++ }
++
++ /**
++ * Gets if an empty AreaEffectCloud may be created
++ *
++ * @return if an empty AreaEffectCloud may be created
++ */
++ public boolean allowsEmptyCreation() {
++ return allowEmptyAreaEffectCreation;
++ }
++ // Paper end
++
+ @Override
+ public boolean isCancelled() {
+ return cancelled;
diff --git a/patches/server/1045-Expand-LingeringPotion-API.patch b/patches/server/1045-Expand-LingeringPotion-API.patch
new file mode 100644
index 0000000000..9939920a04
--- /dev/null
+++ b/patches/server/1045-Expand-LingeringPotion-API.patch
@@ -0,0 +1,19 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Tamion <[email protected]>
+Date: Sat, 4 Nov 2023 23:57:05 +0100
+Subject: [PATCH] Expand LingeringPotion API
+
+
+diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java
+index 2f80d484ad523860322483cebe92cf7cd8cfad22..b34dbb083ecc3a6ead7721391a79e7061e098498 100644
+--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java
++++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java
+@@ -288,7 +288,7 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie
+
+ // CraftBukkit start
+ org.bukkit.event.entity.LingeringPotionSplashEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callLingeringPotionSplashEvent(this, position, entityareaeffectcloud);
+- if (!(event.isCancelled() || entityareaeffectcloud.isRemoved() || (noEffects && entityareaeffectcloud.effects.isEmpty() && entityareaeffectcloud.getPotion().getEffects().isEmpty()))) { // Paper - don't spawn area effect cloud if the effects were empty and not changed during the event handling
++ if (!(event.isCancelled() || entityareaeffectcloud.isRemoved() || (!event.allowsEmptyCreation() && (noEffects && entityareaeffectcloud.effects.isEmpty() && entityareaeffectcloud.getPotion().getEffects().isEmpty())))) { // Paper - don't spawn area effect cloud if the effects were empty and not changed during the event handling
+ this.level().addFreshEntity(entityareaeffectcloud);
+ } else {
+ entityareaeffectcloud.discard();