mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-01 05:47:45 +01:00
Include axolotls in affected entities for water splash potions (#7024)
Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
This commit is contained in:
parent
893323e31d
commit
37cc5035e4
@ -10,14 +10,27 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java
|
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java
|
||||||
@@ -0,0 +0,0 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie
|
@@ -0,0 +0,0 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private static final Predicate<net.minecraft.world.entity.LivingEntity> APPLY_WATER_GET_ENTITIES_PREDICATE = ThrownPotion.WATER_SENSITIVE.or(Axolotl.class::isInstance); // Paper
|
||||||
private void applyWater() {
|
private void applyWater() {
|
||||||
AABB axisalignedbb = this.getBoundingBox().inflate(4.0D, 2.0D, 4.0D);
|
AABB axisalignedbb = this.getBoundingBox().inflate(4.0D, 2.0D, 4.0D);
|
||||||
List<net.minecraft.world.entity.LivingEntity> list = this.level.getEntitiesOfClass(net.minecraft.world.entity.LivingEntity.class, axisalignedbb, ThrownPotion.WATER_SENSITIVE);
|
- List<net.minecraft.world.entity.LivingEntity> list = this.level.getEntitiesOfClass(net.minecraft.world.entity.LivingEntity.class, axisalignedbb, ThrownPotion.WATER_SENSITIVE);
|
||||||
|
+ List<net.minecraft.world.entity.LivingEntity> list = this.level.getEntitiesOfClass(net.minecraft.world.entity.LivingEntity.class, axisalignedbb, ThrownPotion.APPLY_WATER_GET_ENTITIES_PREDICATE); // Paper
|
||||||
+ Map<LivingEntity, Double> affected = new HashMap<>(); // Paper
|
+ Map<LivingEntity, Double> affected = new HashMap<>(); // Paper
|
||||||
|
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
Iterator iterator = list.iterator();
|
Iterator iterator = list.iterator();
|
||||||
@@ -0,0 +0,0 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie
|
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
net.minecraft.world.entity.LivingEntity entityliving = (net.minecraft.world.entity.LivingEntity) iterator.next();
|
||||||
|
+ // Paper start - Change into single getEntities for axolotls & water sensitive
|
||||||
|
+ if (entityliving instanceof Axolotl axolotl) {
|
||||||
|
+ affected.put(axolotl.getBukkitLivingEntity(), 1.0);
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
double d0 = this.distanceToSqr((Entity) entityliving);
|
double d0 = this.distanceToSqr((Entity) entityliving);
|
||||||
|
|
||||||
if (d0 < 16.0D && entityliving.isSensitiveToWater()) {
|
if (d0 < 16.0D && entityliving.isSensitiveToWater()) {
|
||||||
@ -26,22 +39,33 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ double intensity = 1.0D - Math.sqrt(d0) / 4.0D;
|
+ double intensity = 1.0D - Math.sqrt(d0) / 4.0D;
|
||||||
+ affected.put(entityliving.getBukkitLivingEntity(), intensity);
|
+ affected.put(entityliving.getBukkitLivingEntity(), intensity);
|
||||||
+ // entityliving.hurt(DamageSource.indirectMagic(this, this.getOwner()), 1.0F); // Paper - moved down
|
+ // entityliving.hurt(DamageSource.indirectMagic(this, this.getOwner()), 1.0F); // Paper - moved down
|
||||||
|
+ // Paper end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- List<Axolotl> list1 = this.level.getEntitiesOfClass(Axolotl.class, axisalignedbb);
|
||||||
|
- Iterator iterator1 = list1.iterator();
|
||||||
|
-
|
||||||
|
- while (iterator1.hasNext()) {
|
||||||
|
- Axolotl axolotl = (Axolotl) iterator1.next();
|
||||||
|
-
|
||||||
|
- axolotl.rehydrate();
|
||||||
|
+ // Paper start
|
||||||
+ org.bukkit.event.entity.PotionSplashEvent event = CraftEventFactory.callPotionSplashEvent(this, affected);
|
+ org.bukkit.event.entity.PotionSplashEvent event = CraftEventFactory.callPotionSplashEvent(this, affected);
|
||||||
+ if (!event.isCancelled()) {
|
+ if (!event.isCancelled()) {
|
||||||
+ for (LivingEntity affectedEntity : event.getAffectedEntities()) {
|
+ for (LivingEntity affectedEntity : event.getAffectedEntities()) {
|
||||||
+ net.minecraft.world.entity.LivingEntity entityliving = ((CraftLivingEntity) affectedEntity).getHandle();
|
+ net.minecraft.world.entity.LivingEntity entityliving = ((CraftLivingEntity) affectedEntity).getHandle();
|
||||||
+ entityliving.hurt(DamageSource.indirectMagic(entityliving, this.getOwner()), 1.0F);
|
+ if (entityliving instanceof Axolotl axolotl && event.getIntensity(affectedEntity) > 0) {
|
||||||
|
+ axolotl.rehydrate();
|
||||||
|
+ } else {
|
||||||
|
+ entityliving.hurt(DamageSource.indirectMagic(this, this.getOwner()), 1.0F);
|
||||||
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ // Paper end
|
||||||
+ // Paper end
|
}
|
||||||
+
|
|
||||||
List<Axolotl> list1 = this.level.getEntitiesOfClass(Axolotl.class, axisalignedbb);
|
|
||||||
Iterator iterator1 = list1.iterator();
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +0,0 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie
|
@@ -0,0 +0,0 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie
|
||||||
double d0 = this.distanceToSqr((Entity) entityliving);
|
double d0 = this.distanceToSqr((Entity) entityliving);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user