From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 13 May 2021 22:17:50 -0500 Subject: [PATCH] Breedable parrots diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java index 67c72a5b9c786d3240ade51aa48e0e63f0d758cd..bb4449f19319926cbd3ea4961a591669f370bd6e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -215,6 +215,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); // Purpur + if (this.level.purpurConfig.parrotBreedable) this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.BreedGoal(this, 1.0D)); // Purpur this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0D, 5.0F, 1.0F, true)); @@ -329,6 +330,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } } + if (this.level.purpurConfig.parrotBreedable) return super.mobInteract(player, hand); // Purpur return InteractionResult.sidedSuccess(this.level.isClientSide); } else if (itemstack.is(Parrot.POISONOUS_FOOD)) { if (!player.getAbilities().instabuild) { @@ -354,7 +356,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override public boolean isFood(ItemStack stack) { - return false; + return this.level.purpurConfig.parrotBreedable && Parrot.TAME_FOOD.contains(stack.getItem()); // Purpur } public static boolean checkParrotSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { @@ -373,13 +375,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override public boolean canMate(Animal other) { - return false; + return super.canMate(other); // Purpur } @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { - return null; + return world.purpurConfig.parrotBreedable ? EntityType.PARROT.create(world) : null; // Purpur } @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index 65992ff2a5fa2cd3e27f940eac1dd6eb8b2d3cf9..37a7e2af2d9967e0c5b33644254ed9528f9d7c31 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -1492,6 +1492,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 256D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; + public boolean parrotBreedable = false; private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); @@ -1503,6 +1504,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); + parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); } public boolean phantomRidable = false;