From 814f6b2a865eb32399334f03368106b85367f5f4 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 26 Mar 2020 19:52:09 -0500 Subject: [PATCH] Breedable Polar Bears --- .../server/0114-Breedable-Polar-Bears.patch | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 patches/server/0114-Breedable-Polar-Bears.patch diff --git a/patches/server/0114-Breedable-Polar-Bears.patch b/patches/server/0114-Breedable-Polar-Bears.patch new file mode 100644 index 000000000..d202345c3 --- /dev/null +++ b/patches/server/0114-Breedable-Polar-Bears.patch @@ -0,0 +1,88 @@ +From 32cd8dd303cda4d7c46aab58a5f43af08a003287 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Thu, 26 Mar 2020 19:46:44 -0500 +Subject: [PATCH] Breedable Polar Bears + +--- + .../net/minecraft/server/EntityPolarBear.java | 30 ++++++++++++++++++- + .../net/pl3x/purpur/PurpurWorldConfig.java | 5 ++++ + 2 files changed, 34 insertions(+), 1 deletion(-) + +diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java +index 0a3906bde0..42fef3abaa 100644 +--- a/src/main/java/net/minecraft/server/EntityPolarBear.java ++++ b/src/main/java/net/minecraft/server/EntityPolarBear.java +@@ -32,6 +32,28 @@ public class EntityPolarBear extends EntityAnimal { + public boolean requireShiftToMount() { + return world.purpurConfig.polarBearRequireShiftToMount; + } ++ ++ @Override ++ public boolean mate(EntityAnimal entityanimal) { ++ if (entityanimal == this) { ++ return false; ++ } else if (this.isStanding()) { ++ return false; ++ } else if (this.getGoalTarget() != null) { ++ return false; ++ } else if (!(entityanimal instanceof EntityPolarBear)) { ++ return false; ++ } else { ++ EntityPolarBear polarbear = (EntityPolarBear) entityanimal; ++ if (polarbear.isStanding()) { ++ return false; ++ } ++ if (polarbear.getGoalTarget() != null) { ++ return false; ++ } ++ return this.isInLove() && polarbear.isInLove(); ++ } ++ } + // Purpur end + + @Override +@@ -41,7 +63,7 @@ public class EntityPolarBear extends EntityAnimal { + + @Override + public boolean i(ItemStack itemstack) { +- return false; ++ return world.purpurConfig.polarBearBreedableItem != null && itemstack.getItem() == world.purpurConfig.polarBearBreedableItem; // Purpur + } + + @Override +@@ -51,6 +73,12 @@ public class EntityPolarBear extends EntityAnimal { + this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntityPolarBear.c()); + this.goalSelector.a(1, new EntityPolarBear.d()); ++ // Purpur start ++ if (world.purpurConfig.polarBearBreedableItem != null) { ++ this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D)); ++ this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.0D, RecipeItemStack.a(world.purpurConfig.polarBearBreedableItem), false)); ++ } ++ // Purpur end + this.goalSelector.a(4, new PathfinderGoalFollowParent(this, 1.25D)); + this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, 1.0D)); + this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index c2590ef879..bb48a9232e 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -678,10 +678,15 @@ public class PurpurWorldConfig { + public boolean polarBearRidable = false; + public boolean polarBearRidableInWater = false; + public boolean polarBearRequireShiftToMount = true; ++ public String polarBearBreedableItemString = ""; ++ public Item polarBearBreedableItem = null; + private void polarBearSettings() { + polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); + polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); + polarBearRequireShiftToMount = getBoolean("mobs.polar_bear.require-shift-to-mount", polarBearRequireShiftToMount); ++ polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); ++ Item item = IRegistry.ITEM.get(new MinecraftKey(polarBearBreedableItemString)); ++ if (item != Items.AIR) polarBearBreedableItem = item; + } + + public boolean pufferfishRidable = false; +-- +2.24.0 +