You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.0 KiB
79 lines
3.0 KiB
--- ../src-base/minecraft/net/minecraft/potion/Potion.java |
|
+++ ../src-work/minecraft/net/minecraft/potion/Potion.java |
|
@@ -17,6 +17,12 @@ |
|
import net.minecraft.util.DamageSource; |
|
import net.minecraft.util.StringUtils; |
|
|
|
+// CraftBukkit start |
|
+import net.minecraft.entity.projectile.EntityPotion; |
|
+import org.bukkit.craftbukkit.event.CraftEventFactory; |
|
+import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; |
|
+// CraftBukkit end |
|
+ |
|
public class Potion |
|
{ |
|
public static final Potion[] potionTypes = new Potion[32]; |
|
@@ -78,6 +84,7 @@ |
|
} |
|
|
|
this.liquidColor = p_i1573_3_; |
|
+ org.bukkit.potion.PotionEffectType.registerPotionEffectType(new org.bukkit.craftbukkit.potion.CraftPotionEffectType(this)); // CraftBukkit |
|
} |
|
|
|
protected Potion setIconIndex(int p_76399_1_, int p_76399_2_) |
|
@@ -97,14 +104,14 @@ |
|
{ |
|
if (p_76394_1_.getHealth() < p_76394_1_.getMaxHealth()) |
|
{ |
|
- p_76394_1_.heal(1.0F); |
|
+ p_76394_1_.heal(1.0F, RegainReason.MAGIC_REGEN); // CraftBukkit |
|
} |
|
} |
|
else if (this.id == poison.id) |
|
{ |
|
if (p_76394_1_.getHealth() > 1.0F) |
|
{ |
|
- p_76394_1_.attackEntityFrom(DamageSource.magic, 1.0F); |
|
+ p_76394_1_.attackEntityFrom(CraftEventFactory.POISON, 1.0F); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON |
|
} |
|
} |
|
else if (this.id == wither.id) |
|
@@ -131,12 +138,19 @@ |
|
} |
|
else |
|
{ |
|
- p_76394_1_.heal((float)Math.max(4 << p_76394_2_, 0)); |
|
+ p_76394_1_.heal((float)Math.max(4 << p_76394_2_, 0), RegainReason.MAGIC); // CraftBukkit |
|
} |
|
} |
|
|
|
public void affectEntity(EntityLivingBase p_76402_1_, EntityLivingBase p_76402_2_, int p_76402_3_, double p_76402_4_) |
|
{ |
|
+ // CraftBukkit start - Delegate; we need EntityPotion |
|
+ applyInstantEffect(p_76402_1_, p_76402_2_, p_76402_3_, p_76402_4_, null); |
|
+ } |
|
+ |
|
+ public void applyInstantEffect(EntityLivingBase p_76402_1_, EntityLivingBase p_76402_2_, int p_76402_3_, double p_76402_4_, EntityPotion potion) |
|
+ { |
|
+ // CraftBukkit end |
|
int j; |
|
|
|
if ((this.id != heal.id || p_76402_2_.isEntityUndead()) && (this.id != harm.id || !p_76402_2_.isEntityUndead())) |
|
@@ -151,14 +165,15 @@ |
|
} |
|
else |
|
{ |
|
- p_76402_2_.attackEntityFrom(DamageSource.causeIndirectMagicDamage(p_76402_2_, p_76402_1_), (float)j); |
|
+ // CraftBukkit - The "damager" needs to be the potion |
|
+ p_76402_2_.attackEntityFrom(DamageSource.causeIndirectMagicDamage(potion != null ? potion : p_76402_2_, p_76402_1_), (float)j); |
|
} |
|
} |
|
} |
|
else |
|
{ |
|
j = (int)(p_76402_4_ * (double)(4 << p_76402_3_) + 0.5D); |
|
- p_76402_2_.heal((float)j); |
|
+ p_76402_2_.heal((float)j, RegainReason.MAGIC); // CraftBukkit |
|
} |
|
} |
|
|
|
|