--- a/net/minecraft/world/entity/animal/EntityParrot.java
+++ b/net/minecraft/world/entity/animal/EntityParrot.java
@@ -261,7 +261,7 @@
             }
 
             if (!this.level().isClientSide) {
-                if (this.random.nextInt(10) == 0) {
+                if (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, entityhuman).isCancelled()) { // CraftBukkit
                     this.tame(entityhuman);
                     this.level().broadcastEntityEvent(this, (byte) 7);
                 } else {
@@ -275,7 +275,7 @@
                 itemstack.shrink(1);
             }
 
-            this.addEffect(new MobEffect(MobEffects.POISON, 900));
+            this.addEffect(new MobEffect(MobEffects.POISON, 900), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.FOOD); // CraftBukkit
             if (entityhuman.isCreative() || !this.isInvulnerable()) {
                 this.hurt(this.damageSources().playerAttack(entityhuman), Float.MAX_VALUE);
             }
@@ -382,7 +382,7 @@
 
     @Override
     public boolean isPushable() {
-        return true;
+        return super.isPushable(); // CraftBukkit - collidable API
     }
 
     @Override
@@ -397,11 +397,14 @@
         if (this.isInvulnerableTo(damagesource)) {
             return false;
         } else {
-            if (!this.level().isClientSide) {
+            // CraftBukkit start
+            boolean result = super.hurt(damagesource, f);
+            if (!this.level().isClientSide && result) {
+                // CraftBukkit end
                 this.setOrderedToSit(false);
             }
 
-            return super.hurt(damagesource, f);
+            return result; // CraftBukkit
         }
     }
 
