--- a/net/minecraft/world/entity/animal/EntityCat.java +++ b/net/minecraft/world/entity/animal/EntityCat.java @@ -181,10 +181,10 @@ @Override public void readAdditionalSaveData(NBTTagCompound nbttagcompound) { super.readAdditionalSaveData(nbttagcompound); - Optional optional = Optional.ofNullable(MinecraftKey.tryParse(nbttagcompound.getString("variant"))).map((minecraftkey) -> { + Optional> optional = Optional.ofNullable(MinecraftKey.tryParse(nbttagcompound.getString("variant"))).map((minecraftkey) -> { // CraftBukkit - decompile error return ResourceKey.create(Registries.CAT_VARIANT, minecraftkey); }); - IRegistry iregistry = BuiltInRegistries.CAT_VARIANT; + IRegistry iregistry = BuiltInRegistries.CAT_VARIANT; // CraftBukkit - decompile error Objects.requireNonNull(iregistry); optional.flatMap(iregistry::getHolder).ifPresent(this::setVariant); @@ -452,7 +452,7 @@ } private void tryToTame(EntityHuman entityhuman) { - 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); @@ -470,7 +470,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, Predicate predicate, boolean flag) { @@ -611,7 +611,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 } } @@ -643,10 +651,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; }