aboutsummaryrefslogtreecommitdiffhomepage
path: root/patch-remap/og/net/minecraft/world/entity/animal/EntityBee.patch
diff options
context:
space:
mode:
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.patch108
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);
+ }
+