From 86fbdf21c8c9e7c97a69a7b875ffa094e6bb3b5c 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 --- .../net/minecraft/server/EntityDrowned.java | 15 ++++++++++ .../net/minecraft/server/EntityPigZombie.java | 15 ++++++++++ .../net/minecraft/server/EntityZombie.java | 29 +++++++++++++----- .../minecraft/server/EntityZombieHusk.java | 15 ++++++++++ .../server/EntityZombieVillager.java | 15 ++++++++++ .../net/pl3x/purpur/PurpurWorldConfig.java | 30 +++++++++++++++++++ 6 files changed, 112 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java index 63f5969b10..f32950cc9b 100644 --- a/src/main/java/net/minecraft/server/EntityDrowned.java +++ b/src/main/java/net/minecraft/server/EntityDrowned.java @@ -34,6 +34,21 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { public boolean requireShiftToMount() { return world.purpurConfig.drownedRequireShiftToMount; } + + @Override + public boolean jockeyOnlyBaby() { + return world.purpurConfig.drownedJockeyOnlyBaby; + } + + @Override + public double jockeyChance() { + return world.purpurConfig.drownedJockeyChance; + } + + @Override + public boolean jockeyTryExistingChickens() { + return world.purpurConfig.drownedJockeyTryExistingChickens; + } // Purpur end @Override diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java index fb9ef88ea3..90bf12c735 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -32,6 +32,21 @@ public class EntityPigZombie extends EntityZombie { public boolean requireShiftToMount() { return world.purpurConfig.zombiePigmanRequireShiftToMount; } + + @Override + public boolean jockeyOnlyBaby() { + return world.purpurConfig.zombiePigmanJockeyOnlyBaby; + } + + @Override + public double jockeyChance() { + return world.purpurConfig.zombiePigmanJockeyChance; + } + + @Override + public boolean jockeyTryExistingChickens() { + return world.purpurConfig.zombiePigmanJockeyTryExistingChickens; + } // Purpur end @Override diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java index 95ae6f3494..e60e4adc1d 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -3,6 +3,7 @@ package net.minecraft.server; import com.mojang.datafixers.types.DynamicOps; import java.time.LocalDate; import java.time.temporal.ChronoField; +import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.function.Predicate; @@ -59,6 +60,18 @@ public class EntityZombie extends EntityMonster { public boolean requireShiftToMount() { return world.purpurConfig.zombieRequireShiftToMount; } + + public boolean jockeyOnlyBaby() { + return world.purpurConfig.zombieJockeyOnlyBaby; + } + + public double jockeyChance() { + return world.purpurConfig.zombieJockeyChance; + } + + public boolean jockeyTryExistingChickens() { + return world.purpurConfig.zombieJockeyTryExistingChickens; + } // Purpur end @Override @@ -542,18 +555,19 @@ public class EntityZombie extends EntityMonster { if (object instanceof EntityZombie.GroupDataZombie) { EntityZombie.GroupDataZombie entityzombie_groupdatazombie = (EntityZombie.GroupDataZombie) object; - if (entityzombie_groupdatazombie.a) { - this.setBaby(true); - if ((double) generatoraccess.getRandom().nextFloat() < 0.05D) { - List list = generatoraccess.a(EntityChicken.class, this.getBoundingBox().grow(5.0D, 3.0D, 5.0D), IEntitySelector.c); + // Purpur start + if (!jockeyOnlyBaby() || entityzombie_groupdatazombie.isBaby()) { + this.setBaby(entityzombie_groupdatazombie.isBaby()); + if ((double) generatoraccess.getRandom().nextFloat() < jockeyChance()) { + List list = jockeyTryExistingChickens() ? generatoraccess.a(EntityChicken.class, this.getBoundingBox().grow(5.0D, 3.0D, 5.0D), IEntitySelector.c) : Collections.emptyList(); + // Purpur end if (!list.isEmpty()) { EntityChicken entitychicken = (EntityChicken) list.get(0); entitychicken.r(true); this.startRiding(entitychicken); - } - } else if ((double) generatoraccess.getRandom().nextFloat() < 0.05D) { + } else { // Purpur EntityChicken entitychicken1 = (EntityChicken) EntityTypes.CHICKEN.a(this.world); entitychicken1.setPositionRotation(this.locX(), this.locY(), this.locZ(), this.yaw, 0.0F); @@ -561,6 +575,7 @@ public class EntityZombie extends EntityMonster { entitychicken1.r(true); generatoraccess.addEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit this.startRiding(entitychicken1); + } // Purpur } } @@ -653,7 +668,7 @@ public class EntityZombie extends EntityMonster { public class GroupDataZombie implements GroupDataEntity { - public final boolean a; + public final boolean a; public boolean isBaby() { return a; } // Purpur - OBFHELPER private GroupDataZombie(boolean flag) { this.a = flag; diff --git a/src/main/java/net/minecraft/server/EntityZombieHusk.java b/src/main/java/net/minecraft/server/EntityZombieHusk.java index db252ba4e0..e8b099d6c8 100644 --- a/src/main/java/net/minecraft/server/EntityZombieHusk.java +++ b/src/main/java/net/minecraft/server/EntityZombieHusk.java @@ -23,6 +23,21 @@ public class EntityZombieHusk extends EntityZombie { public boolean requireShiftToMount() { return world.purpurConfig.huskRequireShiftToMount; } + + @Override + public boolean jockeyOnlyBaby() { + return world.purpurConfig.huskJockeyOnlyBaby; + } + + @Override + public double jockeyChance() { + return world.purpurConfig.huskJockeyChance; + } + + @Override + public boolean jockeyTryExistingChickens() { + return world.purpurConfig.huskJockeyTryExistingChickens; + } // Purpur end public static boolean b(EntityTypes entitytypes, GeneratorAccess generatoraccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) { diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java index ebbfcb75a4..8532385d8d 100644 --- a/src/main/java/net/minecraft/server/EntityZombieVillager.java +++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java @@ -40,6 +40,21 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo public boolean requireShiftToMount() { return world.purpurConfig.zombieVillagerRequireShiftToMount; } + + @Override + public boolean jockeyOnlyBaby() { + return world.purpurConfig.zombieVillagerJockeyOnlyBaby; + } + + @Override + public double jockeyChance() { + return world.purpurConfig.zombieVillagerJockeyChance; + } + + @Override + public boolean jockeyTryExistingChickens() { + return world.purpurConfig.zombieVillagerJockeyTryExistingChickens; + } // Purpur end @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index 360c4b9c7e..092542c811 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -401,10 +401,16 @@ public class PurpurWorldConfig { public boolean drownedRidable = false; public boolean drownedRidableInWater = false; public boolean drownedRequireShiftToMount = true; + public boolean drownedJockeyOnlyBaby = true; + public double drownedJockeyChance = 0.05D; + public boolean drownedJockeyTryExistingChickens = true; private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); drownedRequireShiftToMount = getBoolean("mobs.drowned.require-shift-to-mount", drownedRequireShiftToMount); + drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); + drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); + drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); } public boolean elderGuardianRidable = false; @@ -515,10 +521,16 @@ public class PurpurWorldConfig { public boolean huskRidable = false; public boolean huskRidableInWater = false; public boolean huskRequireShiftToMount = true; + public boolean huskJockeyOnlyBaby = true; + public double huskJockeyChance = 0.05D; + public boolean huskJockeyTryExistingChickens = true; private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); huskRequireShiftToMount = getBoolean("mobs.husk.require-shift-to-mount", huskRequireShiftToMount); + huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); + huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); + huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); } public boolean horseRidableInWater = false; @@ -931,11 +943,17 @@ public class PurpurWorldConfig { public boolean zombieRidableInWater = false; public boolean zombieRequireShiftToMount = true; public boolean zombieTargetTurtleEggs = true; + public boolean zombieJockeyOnlyBaby = true; + public double zombieJockeyChance = 0.05D; + public boolean zombieJockeyTryExistingChickens = true; private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); zombieRequireShiftToMount = getBoolean("mobs.zombie.require-shift-to-mount", zombieRequireShiftToMount); zombieTargetTurtleEggs = getBoolean("mobs.zombie.target-turtle-eggs", zombieTargetTurtleEggs); + zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); + zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); + zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); } public boolean zombieHorseCanSwim = false; @@ -950,18 +968,30 @@ public class PurpurWorldConfig { public boolean zombiePigmanRidable = false; public boolean zombiePigmanRidableInWater = false; public boolean zombiePigmanRequireShiftToMount = true; + public boolean zombiePigmanJockeyOnlyBaby = true; + public double zombiePigmanJockeyChance = 0.05D; + public boolean zombiePigmanJockeyTryExistingChickens = true; private void zombiePigmanSettings() { zombiePigmanRidable = getBoolean("mobs.zombie_pigman.ridable", zombiePigmanRidable); zombiePigmanRidableInWater = getBoolean("mobs.zombie_pigman.ridable-in-water", zombiePigmanRidableInWater); zombiePigmanRequireShiftToMount = getBoolean("mobs.zombie_pigman.require-shift-to-mount", zombiePigmanRequireShiftToMount); + zombiePigmanJockeyOnlyBaby = getBoolean("mobs.zombie_pigman.jockey.only-babies", zombiePigmanJockeyOnlyBaby); + zombiePigmanJockeyChance = getDouble("mobs.zombie_pigman.jockey.chance", zombiePigmanJockeyChance); + zombiePigmanJockeyTryExistingChickens = getBoolean("mobs.zombie_pigman.jockey.try-existing-chickens", zombiePigmanJockeyTryExistingChickens); } public boolean zombieVillagerRidable = false; public boolean zombieVillagerRidableInWater = false; public boolean zombieVillagerRequireShiftToMount = true; + public boolean zombieVillagerJockeyOnlyBaby = true; + public double zombieVillagerJockeyChance = 0.05D; + public boolean zombieVillagerJockeyTryExistingChickens = true; private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); zombieVillagerRequireShiftToMount = getBoolean("mobs.zombie_villager.require-shift-to-mount", zombieVillagerRequireShiftToMount); + zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); + zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); + zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); } } -- 2.24.0