diff options
Diffstat (limited to 'patch-remap/og/net/minecraft/world/entity/animal/EntityWolf.patch')
-rw-r--r-- | patch-remap/og/net/minecraft/world/entity/animal/EntityWolf.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/patch-remap/og/net/minecraft/world/entity/animal/EntityWolf.patch b/patch-remap/og/net/minecraft/world/entity/animal/EntityWolf.patch new file mode 100644 index 0000000000..8114754db0 --- /dev/null +++ b/patch-remap/og/net/minecraft/world/entity/animal/EntityWolf.patch @@ -0,0 +1,76 @@ +--- a/net/minecraft/world/entity/animal/EntityWolf.java ++++ b/net/minecraft/world/entity/animal/EntityWolf.java +@@ -70,6 +70,12 @@ + import net.minecraft.world.phys.Vec3D; + import org.joml.Vector3f; + ++// CraftBukkit start ++import org.bukkit.event.entity.EntityRegainHealthEvent; ++import org.bukkit.event.entity.EntityTargetEvent; ++import org.bukkit.craftbukkit.event.CraftEventFactory; ++// CraftBukkit end ++ + public class EntityWolf extends EntityTameableAnimal implements IEntityAngerable { + + private static final DataWatcherObject<Boolean> DATA_INTERESTED_ID = DataWatcher.defineId(EntityWolf.class, DataWatcherRegistry.BOOLEAN); +@@ -298,15 +304,19 @@ + } else { + Entity entity = damagesource.getEntity(); + +- if (!this.level().isClientSide) { +- this.setOrderedToSit(false); +- } ++ // CraftBukkit - move diff down + + if (entity != null && !(entity instanceof EntityHuman) && !(entity instanceof EntityArrow)) { + f = (f + 1.0F) / 2.0F; + } + +- return super.hurt(damagesource, f); ++ // CraftBukkit start ++ boolean result = super.hurt(damagesource, f); ++ if (!this.level().isClientSide && result) { ++ this.setOrderedToSit(false); ++ } ++ return result; ++ // CraftBukkit end + } + } + +@@ -326,7 +336,7 @@ + super.setTame(flag); + if (flag) { + this.getAttribute(GenericAttributes.MAX_HEALTH).setBaseValue(20.0D); +- this.setHealth(20.0F); ++ this.setHealth(this.getMaxHealth()); // CraftBukkit - 20.0 -> getMaxHealth() + } else { + this.getAttribute(GenericAttributes.MAX_HEALTH).setBaseValue(8.0D); + } +@@ -349,7 +359,7 @@ + itemstack.shrink(1); + } + +- this.heal((float) item.getFoodProperties().getNutrition()); ++ this.heal((float) item.getFoodProperties().getNutrition(), EntityRegainHealthEvent.RegainReason.EATING); // CraftBukkit + return EnumInteractionResult.SUCCESS; + } else { + if (item instanceof ItemDye) { +@@ -377,7 +387,7 @@ + this.setOrderedToSit(!this.isOrderedToSit()); + this.jumping = false; + this.navigation.stop(); +- this.setTarget((EntityLiving) null); ++ this.setTarget((EntityLiving) null, EntityTargetEvent.TargetReason.FORGOT_TARGET, true); // CraftBukkit - reason + return EnumInteractionResult.SUCCESS; + } else { + return enuminteractionresult; +@@ -388,7 +398,8 @@ + itemstack.shrink(1); + } + +- if (this.random.nextInt(3) == 0) { ++ // CraftBukkit - added event call and isCancelled check. ++ if (this.random.nextInt(3) == 0 && !CraftEventFactory.callEntityTameEvent(this, entityhuman).isCancelled()) { + this.tame(entityhuman); + this.navigation.stop(); + this.setTarget((EntityLiving) null); |