80 lines
3.0 KiB
Diff
80 lines
3.0 KiB
Diff
--- ../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
|
|
}
|
|
}
|
|
|