diff options
Diffstat (limited to 'patch-remap/og/net/minecraft/world/entity/animal/EntityBee.patch')
-rw-r--r-- | patch-remap/og/net/minecraft/world/entity/animal/EntityBee.patch | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/patch-remap/og/net/minecraft/world/entity/animal/EntityBee.patch b/patch-remap/og/net/minecraft/world/entity/animal/EntityBee.patch new file mode 100644 index 0000000000..88399604e3 --- /dev/null +++ b/patch-remap/og/net/minecraft/world/entity/animal/EntityBee.patch @@ -0,0 +1,108 @@ +--- a/net/minecraft/world/entity/animal/EntityBee.java ++++ b/net/minecraft/world/entity/animal/EntityBee.java +@@ -90,6 +90,12 @@ + import net.minecraft.world.level.pathfinder.PathType; + import net.minecraft.world.phys.Vec3D; + ++// CraftBukkit start ++import org.bukkit.craftbukkit.event.CraftEventFactory; ++import org.bukkit.event.entity.EntityPotionEffectEvent; ++import org.bukkit.event.entity.EntityTargetEvent; ++// CraftBukkit end ++ + public class EntityBee extends EntityAnimal implements IEntityAngerable, EntityBird { + + public static final float FLAP_DEGREES_PER_TICK = 120.32113F; +@@ -187,12 +193,19 @@ + + @Override + public void addAdditionalSaveData(NBTTagCompound nbttagcompound) { ++ // CraftBukkit start - selectively save data ++ addAdditionalSaveData(nbttagcompound, true); ++ } ++ ++ @Override ++ public void addAdditionalSaveData(NBTTagCompound nbttagcompound, boolean includeAll) { ++ // CraftBukkit end + super.addAdditionalSaveData(nbttagcompound); +- if (this.hasHive()) { ++ if (includeAll && this.hasHive()) { // CraftBukkit - selectively save hive + nbttagcompound.put("HivePos", GameProfileSerializer.writeBlockPos(this.getHivePos())); + } + +- if (this.hasSavedFlowerPos()) { ++ if (includeAll && this.hasSavedFlowerPos()) { // CraftBukkit - selectively save flower + nbttagcompound.put("FlowerPos", GameProfileSerializer.writeBlockPos(this.getSavedFlowerPos())); + } + +@@ -242,7 +255,7 @@ + } + + if (b0 > 0) { +- ((EntityLiving) entity).addEffect(new MobEffect(MobEffects.POISON, b0 * 20, 0), this); ++ ((EntityLiving) entity).addEffect(new MobEffect(MobEffects.POISON, b0 * 20, 0), this, EntityPotionEffectEvent.Cause.ATTACK); // CraftBukkit + } + } + +@@ -640,11 +653,14 @@ + if (this.isInvulnerableTo(damagesource)) { + return false; + } else { +- if (!this.level().isClientSide) { ++ // CraftBukkit start - Only stop pollinating if entity was damaged ++ boolean result = super.hurt(damagesource, f); ++ if (result && !this.level().isClientSide) { ++ // CraftBukkit end + this.beePollinateGoal.stopPollinating(); + } + +- return super.hurt(damagesource, f); ++ return result; // CraftBukkit + } + } + +@@ -999,7 +1015,7 @@ + + e() { + super(); +- this.travellingTicks = EntityBee.this.level().random.nextInt(10); ++ this.travellingTicks = EntityBee.this.random.nextInt(10); // CraftBukkit - SPIGOT-7495: Give Bees another chance and let them use their own random, avoid concurrency issues + this.blacklistedTargets = Lists.newArrayList(); + this.setFlags(EnumSet.of(PathfinderGoal.Type.MOVE)); + } +@@ -1116,7 +1132,7 @@ + + f() { + super(); +- this.travellingTicks = EntityBee.this.level().random.nextInt(10); ++ this.travellingTicks = EntityBee.this.random.nextInt(10); // CraftBukkit - SPIGOT-7495: Give Bees another chance and let them use their own random, avoid concurrency issues + this.setFlags(EnumSet.of(PathfinderGoal.Type.MOVE)); + } + +@@ -1216,7 +1232,7 @@ + } + } + +- if (iblockdata1 != null) { ++ if (iblockdata1 != null && CraftEventFactory.callEntityChangeBlockEvent(EntityBee.this, blockposition, iblockdata1)) { // CraftBukkit + EntityBee.this.level().levelEvent(2005, blockposition, 0); + EntityBee.this.level().setBlockAndUpdate(blockposition, iblockdata1); + EntityBee.this.incrementNumCropsGrownSincePollination(); +@@ -1289,7 +1305,7 @@ + @Override + protected void alertOther(EntityInsentient entityinsentient, EntityLiving entityliving) { + if (entityinsentient instanceof EntityBee && this.mob.hasLineOfSight(entityliving)) { +- entityinsentient.setTarget(entityliving); ++ entityinsentient.setTarget(entityliving, EntityTargetEvent.TargetReason.TARGET_ATTACKED_ENTITY, true); // CraftBukkit - reason + } + + } +@@ -1298,7 +1314,7 @@ + private static class c extends PathfinderGoalNearestAttackableTarget<EntityHuman> { + + c(EntityBee entitybee) { +- Objects.requireNonNull(entitybee); ++ // Objects.requireNonNull(entitybee); // CraftBukkit - decompile error + super(entitybee, EntityHuman.class, 10, true, false, entitybee::isAngryAt); + } + |