From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 26 Mar 2020 21:39:32 -0500 Subject: [PATCH] Configurable jockey options diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java index 04b31af8a16eeec19c1c26e8794416a0c23b5c10..1234c13b4290f45997eab79f6ef18933dcf3b04f 100644 --- a/net/minecraft/world/entity/monster/zombie/Drowned.java +++ b/net/minecraft/world/entity/monster/zombie/Drowned.java @@ -117,6 +117,23 @@ public class Drowned extends Zombie implements RangedAttackMob { } // Purpur end - Configurable entity base attributes + // Purpur start - Configurable jockey options + @Override + public boolean jockeyOnlyBaby() { + return level().purpurConfig.drownedJockeyOnlyBaby; + } + + @Override + public double jockeyChance() { + return level().purpurConfig.drownedJockeyChance; + } + + @Override + public boolean jockeyTryExistingChickens() { + return level().purpurConfig.drownedJockeyTryExistingChickens; + } + // Purpur end - Configurable jockey options + @Override protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); diff --git a/net/minecraft/world/entity/monster/zombie/Husk.java b/net/minecraft/world/entity/monster/zombie/Husk.java index 7a3747d67f1ce93e0703965144e32d134adbdee8..91800961ba5b724aac905ccd4fd1d0f915c93803 100644 --- a/net/minecraft/world/entity/monster/zombie/Husk.java +++ b/net/minecraft/world/entity/monster/zombie/Husk.java @@ -67,6 +67,23 @@ public class Husk extends Zombie { } // Purpur end - Configurable entity base attributes + // Purpur start - Configurable jockey options + @Override + public boolean jockeyOnlyBaby() { + return level().purpurConfig.huskJockeyOnlyBaby; + } + + @Override + public double jockeyChance() { + return level().purpurConfig.huskJockeyChance; + } + + @Override + public boolean jockeyTryExistingChickens() { + return level().purpurConfig.huskJockeyTryExistingChickens; + } + // Purpur end - Configurable jockey options + @Override public boolean isSunSensitive() { return false; diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java index 51e9175cf7f0c487d063247dca4e700012283431..f47f4a3f8e0f4f5a40f520a25e87e0068a564b4c 100644 --- a/net/minecraft/world/entity/monster/zombie/Zombie.java +++ b/net/minecraft/world/entity/monster/zombie/Zombie.java @@ -138,6 +138,20 @@ public class Zombie extends Monster { } // Purpur end - Configurable entity base attributes + // Purpur start - Configurable jockey options + public boolean jockeyOnlyBaby() { + return level().purpurConfig.zombieJockeyOnlyBaby; + } + + public double jockeyChance() { + return level().purpurConfig.zombieJockeyChance; + } + + public boolean jockeyTryExistingChickens() { + return level().purpurConfig.zombieJockeyTryExistingChickens; + } + // Purpur end - Configurable jockey options + @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables @@ -549,19 +563,18 @@ public class Zombie extends Monster { } if (groupData instanceof Zombie.ZombieGroupData zombieData) { - if (zombieData.isBaby) { - this.setBaby(true); + if (!jockeyOnlyBaby() || zombieData.isBaby) { // Purpur - Configurable jockey options + this.setBaby(zombieData.isBaby); // Purpur - Configurable jockey options if (zombieData.canSpawnJockey) { - if (random.nextFloat() < 0.05) { - List chickens = level.getEntitiesOfClass( + if (random.nextFloat() < jockeyChance()) { // Purpur - Configurable jockey options + List chickens = jockeyTryExistingChickens() ? level.getEntitiesOfClass( // Purpur - Configurable jockey options Chicken.class, this.getBoundingBox().inflate(5.0, 3.0, 5.0), EntitySelector.ENTITY_NOT_BEING_RIDDEN - ); + ) : java.util.Collections.emptyList(); // Purpur - Configurable jockey options if (!chickens.isEmpty()) { Chicken chicken = chickens.get(0); chicken.setChickenJockey(true); this.startRiding(chicken, false, false); - } - } else if (random.nextFloat() < 0.05) { + } else { // Purpur - Configurable jockey options Chicken chicken = EntityTypes.CHICKEN.create(this.level(), EntitySpawnReason.JOCKEY); if (chicken != null) { chicken.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F); @@ -570,6 +583,7 @@ public class Zombie extends Monster { this.startRiding(chicken, false, false); level.addFreshEntity(chicken, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit } + } // Purpur - Configurable jockey options } } } diff --git a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java index 2323ef6faec7bc62b28240e6dcc9f350de427c8e..155ba4d03e7864b21e7a3dab854315b62d3b9e5b 100644 --- a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java @@ -116,6 +116,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Configurable entity base attributes + // Purpur start - Configurable jockey options + @Override + public boolean jockeyOnlyBaby() { + return level().purpurConfig.zombieVillagerJockeyOnlyBaby; + } + + @Override + public double jockeyChance() { + return level().purpurConfig.zombieVillagerJockeyChance; + } + + @Override + public boolean jockeyTryExistingChickens() { + return level().purpurConfig.zombieVillagerJockeyTryExistingChickens; + } + // Purpur end - Configurable jockey options + @Override protected void defineSynchedData(final SynchedEntityData.Builder entityData) { super.defineSynchedData(entityData); diff --git a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java index 8022a5ce1efedf5b9485c366d0a525077583712c..7a59980a38abb8ed9500def97fc7e3e8952a439d 100644 --- a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java @@ -93,6 +93,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { } // Purpur end - Configurable entity base attributes + // Purpur start - Configurable jockey options + @Override + public boolean jockeyOnlyBaby() { + return level().purpurConfig.zombifiedPiglinJockeyOnlyBaby; + } + + @Override + public double jockeyChance() { + return level().purpurConfig.zombifiedPiglinJockeyChance; + } + + @Override + public boolean jockeyTryExistingChickens() { + return level().purpurConfig.zombifiedPiglinJockeyTryExistingChickens; + } + // Purpur end - Configurable jockey options + @Override protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new SpearUseGoal<>(this, 1.0, 1.0, 10.0F, 2.0F));