1
0
Fork 0
KCauldronX/patches/net/minecraft/potion/Potion.java.patch

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
}
}