--- a/net/minecraft/world/entity/animal/EntityCat.java +++ b/net/minecraft/world/entity/animal/EntityCat.java @@ -410,7 +410,7 @@ } } else if (this.isFood(itemstack)) { this.usePlayerItem(entityhuman, enumhand, itemstack); - if (this.random.nextInt(3) == 0) { + if (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, entityhuman).isCancelled()) { // CraftBukkit this.tame(entityhuman); this.setOrderedToSit(true); this.level.broadcastEntityEvent(this, (byte) 7); @@ -467,7 +467,7 @@ private static class PathfinderGoalTemptChance extends PathfinderGoalTempt { @Nullable - private EntityHuman selectedPlayer; + private EntityLiving selectedPlayer; // CraftBukkit private final EntityCat cat; public PathfinderGoalTemptChance(EntityCat entitycat, double d0, RecipeItemStack recipeitemstack, boolean flag) { @@ -608,7 +608,15 @@ while (iterator.hasNext()) { ItemStack itemstack = (ItemStack) iterator.next(); - this.cat.level.addFreshEntity(new EntityItem(this.cat.level, (double) blockposition_mutableblockposition.getX() - (double) MathHelper.sin(this.cat.yBodyRot * 0.017453292F), (double) blockposition_mutableblockposition.getY(), (double) blockposition_mutableblockposition.getZ() + (double) MathHelper.cos(this.cat.yBodyRot * 0.017453292F), itemstack)); + // CraftBukkit start + EntityItem entityitem = new EntityItem(this.cat.level, (double) blockposition_mutableblockposition.getX() - (double) MathHelper.sin(this.cat.yBodyRot * 0.017453292F), (double) blockposition_mutableblockposition.getY(), (double) blockposition_mutableblockposition.getZ() + (double) MathHelper.cos(this.cat.yBodyRot * 0.017453292F), itemstack); + org.bukkit.event.entity.EntityDropItemEvent event = new org.bukkit.event.entity.EntityDropItemEvent(this.cat.getBukkitEntity(), (org.bukkit.entity.Item) entityitem.getBukkitEntity()); + entityitem.level.getCraftServer().getPluginManager().callEvent(event); + if (event.isCancelled()) { + continue; + } + this.cat.level.addFreshEntity(entityitem); + // CraftBukkit end } } @@ -640,10 +648,10 @@ private final EntityCat cat; public a(EntityCat entitycat, Class oclass, float f, double d0, double d1) { - Predicate predicate = IEntitySelector.NO_CREATIVE_OR_SPECTATOR; + // Predicate predicate = IEntitySelector.NO_CREATIVE_OR_SPECTATOR; // CraftBukkit - decompile error - Objects.requireNonNull(predicate); - super(entitycat, oclass, f, d0, d1, predicate::test); + // Objects.requireNonNull(predicate); // CraftBukkit - decompile error + super(entitycat, oclass, f, d0, d1, IEntitySelector.NO_CREATIVE_OR_SPECTATOR::test); // CraftBukkit - decompile error this.cat = entitycat; }