mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
port Configurable jockey options patch
This commit is contained in:
@@ -1,276 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
||||||
Date: Thu, 26 Mar 2020 21:39:32 -0500
|
|
||||||
Subject: [PATCH] Configurable jockey options
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java
|
|
||||||
index 6675ccfe80cd3c4369ca3f5aec53d0cfa294432b..d471fe99acaf25cb06e36be8a68ab64cfedb4a09 100644
|
|
||||||
--- a/net/minecraft/world/entity/monster/Drowned.java
|
|
||||||
+++ b/net/minecraft/world/entity/monster/Drowned.java
|
|
||||||
@@ -104,6 +104,22 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
|
||||||
this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.drownedSpawnReinforcements);
|
|
||||||
}
|
|
||||||
// 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/Husk.java b/net/minecraft/world/entity/monster/Husk.java
|
|
||||||
index 5ad22d4041afcbd50bf5a6ebfbdcb232eb6d3fbe..cd155b47369318f58ec55289a345f1bf28e2af14 100644
|
|
||||||
--- a/net/minecraft/world/entity/monster/Husk.java
|
|
||||||
+++ b/net/minecraft/world/entity/monster/Husk.java
|
|
||||||
@@ -51,6 +51,22 @@ public class Husk extends Zombie {
|
|
||||||
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.huskSpawnReinforcements);
|
|
||||||
}
|
|
||||||
// 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
|
|
||||||
public static boolean checkHuskSpawnRules(EntityType<Husk> type, ServerLevelAccessor world, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random) {
|
|
||||||
return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (EntitySpawnReason.isSpawner(spawnReason) || world.canSeeSky(pos));
|
|
||||||
}
|
|
||||||
diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java
|
|
||||||
index 5763d259162750297e08acc51551489150dbc593..2ce812ff9cb702a1fc1784f35efb643a2f9036c2 100644
|
|
||||||
--- a/net/minecraft/world/entity/monster/Zombie.java
|
|
||||||
+++ b/net/minecraft/world/entity/monster/Zombie.java
|
|
||||||
@@ -134,6 +134,19 @@ public class Zombie extends Monster {
|
|
||||||
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.zombieScale);
|
|
||||||
}
|
|
||||||
// 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
|
|
||||||
@@ -554,19 +567,20 @@ public class Zombie extends Monster {
|
|
||||||
}
|
|
||||||
|
|
||||||
if (object instanceof Zombie.ZombieGroupData entityzombie_groupdatazombie) {
|
|
||||||
- if (entityzombie_groupdatazombie.isBaby) {
|
|
||||||
- this.setBaby(true);
|
|
||||||
+ // Purpur start
|
|
||||||
+ if (!jockeyOnlyBaby() || entityzombie_groupdatazombie.isBaby) {
|
|
||||||
+ this.setBaby(entityzombie_groupdatazombie.isBaby);
|
|
||||||
if (entityzombie_groupdatazombie.canSpawnJockey) {
|
|
||||||
- if ((double) randomsource.nextFloat() < 0.05D) {
|
|
||||||
- List<Chicken> list = world.getEntitiesOfClass(Chicken.class, this.getBoundingBox().inflate(5.0D, 3.0D, 5.0D), EntitySelector.ENTITY_NOT_BEING_RIDDEN);
|
|
||||||
+ if ((double) randomsource.nextFloat() < jockeyChance()) {
|
|
||||||
+ List<Chicken> list = jockeyTryExistingChickens() ? world.getEntitiesOfClass(Chicken.class, this.getBoundingBox().inflate(5.0D, 3.0D, 5.0D), EntitySelector.ENTITY_NOT_BEING_RIDDEN) : java.util.Collections.emptyList();
|
|
||||||
+ // Purpur end
|
|
||||||
|
|
||||||
if (!list.isEmpty()) {
|
|
||||||
Chicken entitychicken = (Chicken) list.get(0);
|
|
||||||
|
|
||||||
entitychicken.setChickenJockey(true);
|
|
||||||
this.startRiding(entitychicken);
|
|
||||||
- }
|
|
||||||
- } else if ((double) randomsource.nextFloat() < 0.05D) {
|
|
||||||
+ } else { // Purpur
|
|
||||||
Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level(), EntitySpawnReason.JOCKEY);
|
|
||||||
|
|
||||||
if (entitychicken1 != null) {
|
|
||||||
@@ -576,6 +590,7 @@ public class Zombie extends Monster {
|
|
||||||
this.startRiding(entitychicken1);
|
|
||||||
world.addFreshEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit
|
|
||||||
}
|
|
||||||
+ } // Purpur
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java
|
|
||||||
index 35d8cef3c84bfd1bbf8afe2885b4f303a4985cdd..36a074627a95886d38bd5a262dddcebfe32d1ba6 100644
|
|
||||||
--- a/net/minecraft/world/entity/monster/ZombieVillager.java
|
|
||||||
+++ b/net/minecraft/world/entity/monster/ZombieVillager.java
|
|
||||||
@@ -113,6 +113,22 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
|
|
||||||
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombieVillagerSpawnReinforcements);
|
|
||||||
}
|
|
||||||
// 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(SynchedEntityData.Builder builder) {
|
|
||||||
super.defineSynchedData(builder);
|
|
||||||
diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
|
||||||
index ca74450f13198fd7bf0190b4dc1df4288df5729d..953df397ea261d417ada15db8d6ffc539ad07c03 100644
|
|
||||||
--- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
|
||||||
+++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
|
||||||
@@ -87,6 +87,22 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
|
||||||
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.zombifiedPiglinScale);
|
|
||||||
}
|
|
||||||
// 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
|
|
||||||
public void setPersistentAngerTarget(@Nullable UUID angryAt) {
|
|
||||||
this.persistentAngerTarget = angryAt;
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
index a750c73519b43f28b0fea69e6056e2752d2eed35..bb8aa3d4e33e2d8ed4bf3fd668577ea901410783 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -649,6 +649,9 @@ public class PurpurWorldConfig {
|
|
||||||
public double drownedMaxHealth = 20.0D;
|
|
||||||
public double drownedScale = 1.0D;
|
|
||||||
public double drownedSpawnReinforcements = 0.1D;
|
|
||||||
+ 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);
|
|
||||||
@@ -661,6 +664,9 @@ public class PurpurWorldConfig {
|
|
||||||
drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth);
|
|
||||||
drownedScale = Mth.clamp(getDouble("mobs.drowned.attributes.scale", drownedScale), 0.0625D, 16.0D);
|
|
||||||
drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements);
|
|
||||||
+ 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;
|
|
||||||
@@ -932,6 +938,9 @@ public class PurpurWorldConfig {
|
|
||||||
public double huskMaxHealth = 20.0D;
|
|
||||||
public double huskScale = 1.0D;
|
|
||||||
public double huskSpawnReinforcements = 0.1D;
|
|
||||||
+ 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);
|
|
||||||
@@ -944,6 +953,9 @@ public class PurpurWorldConfig {
|
|
||||||
huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth);
|
|
||||||
huskScale = Mth.clamp(getDouble("mobs.husk.attributes.scale", huskScale), 0.0625D, 16.0D);
|
|
||||||
huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements);
|
|
||||||
+ 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 illusionerRidable = false;
|
|
||||||
@@ -1841,6 +1853,9 @@ public class PurpurWorldConfig {
|
|
||||||
public double zombieMaxHealth = 20.0D;
|
|
||||||
public double zombieScale = 1.0D;
|
|
||||||
public double zombieSpawnReinforcements = 0.1D;
|
|
||||||
+ 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);
|
|
||||||
@@ -1853,6 +1868,9 @@ public class PurpurWorldConfig {
|
|
||||||
zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth);
|
|
||||||
zombieScale = Mth.clamp(getDouble("mobs.zombie.attributes.scale", zombieScale), 0.0625D, 16.0D);
|
|
||||||
zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements);
|
|
||||||
+ 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 zombieHorseRidable = false;
|
|
||||||
@@ -1890,6 +1908,9 @@ public class PurpurWorldConfig {
|
|
||||||
public double zombieVillagerMaxHealth = 20.0D;
|
|
||||||
public double zombieVillagerScale = 1.0D;
|
|
||||||
public double zombieVillagerSpawnReinforcements = 0.1D;
|
|
||||||
+ 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);
|
|
||||||
@@ -1902,6 +1923,9 @@ public class PurpurWorldConfig {
|
|
||||||
zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth);
|
|
||||||
zombieVillagerScale = Mth.clamp(getDouble("mobs.zombie_villager.attributes.scale", zombieVillagerScale), 0.0625D, 16.0D);
|
|
||||||
zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements);
|
|
||||||
+ 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean zombifiedPiglinRidable = false;
|
|
||||||
@@ -1910,6 +1934,9 @@ public class PurpurWorldConfig {
|
|
||||||
public double zombifiedPiglinMaxHealth = 20.0D;
|
|
||||||
public double zombifiedPiglinScale = 1.0D;
|
|
||||||
public double zombifiedPiglinSpawnReinforcements = 0.0D;
|
|
||||||
+ public boolean zombifiedPiglinJockeyOnlyBaby = true;
|
|
||||||
+ public double zombifiedPiglinJockeyChance = 0.05D;
|
|
||||||
+ public boolean zombifiedPiglinJockeyTryExistingChickens = true;
|
|
||||||
private void zombifiedPiglinSettings() {
|
|
||||||
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
|
||||||
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
|
|
||||||
@@ -1922,5 +1949,8 @@ public class PurpurWorldConfig {
|
|
||||||
zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth);
|
|
||||||
zombifiedPiglinScale = Mth.clamp(getDouble("mobs.zombified_piglin.attributes.scale", zombifiedPiglinScale), 0.0625D, 16.0D);
|
|
||||||
zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements);
|
|
||||||
+ zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby);
|
|
||||||
+ zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance);
|
|
||||||
+ zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||||
|
Date: Thu, 26 Mar 2020 21:39:32 -0500
|
||||||
|
Subject: [PATCH] Configurable jockey options
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java
|
||||||
|
index 5f44417ddb7ae5a6887211e83c287f5e37076965..bd5bef78e9fdef069fee2da82c570203b79080c0 100644
|
||||||
|
--- a/net/minecraft/world/entity/monster/Drowned.java
|
||||||
|
+++ b/net/minecraft/world/entity/monster/Drowned.java
|
||||||
|
@@ -105,6 +105,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/Husk.java b/net/minecraft/world/entity/monster/Husk.java
|
||||||
|
index c2365ae1cf6f98e262f302a117c4647c383dfbb5..7a8951f93e65c6df145e30d44b9d928dd0c39189 100644
|
||||||
|
--- a/net/minecraft/world/entity/monster/Husk.java
|
||||||
|
+++ b/net/minecraft/world/entity/monster/Husk.java
|
||||||
|
@@ -50,6 +50,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
|
||||||
|
+
|
||||||
|
public static boolean checkHuskSpawnRules(
|
||||||
|
EntityType<Husk> entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
|
||||||
|
) {
|
||||||
|
diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java
|
||||||
|
index c1204ab167b84a33864d7a65f4bd3657ddf05e88..4facb0e962841e014ce28fe9b13a7d94806dfd18 100644
|
||||||
|
--- a/net/minecraft/world/entity/monster/Zombie.java
|
||||||
|
+++ b/net/minecraft/world/entity/monster/Zombie.java
|
||||||
|
@@ -125,6 +125,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
|
||||||
|
@@ -544,19 +558,18 @@ public class Zombie extends Monster {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (spawnGroupData instanceof Zombie.ZombieGroupData zombieGroupData) {
|
||||||
|
- if (zombieGroupData.isBaby) {
|
||||||
|
- this.setBaby(true);
|
||||||
|
+ if (!jockeyOnlyBaby() || zombieGroupData.isBaby) { // Purpur - Configurable jockey options
|
||||||
|
+ this.setBaby(zombieGroupData.isBaby); // Purpur - Configurable jockey options
|
||||||
|
if (zombieGroupData.canSpawnJockey) {
|
||||||
|
- if (random.nextFloat() < 0.05) {
|
||||||
|
- List<Chicken> entitiesOfClass = level.getEntitiesOfClass(
|
||||||
|
+ if (random.nextFloat() < jockeyChance()) { // Purpur - Configurable jockey options
|
||||||
|
+ List<Chicken> entitiesOfClass = 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 (!entitiesOfClass.isEmpty()) {
|
||||||
|
Chicken chicken = entitiesOfClass.get(0);
|
||||||
|
chicken.setChickenJockey(true);
|
||||||
|
this.startRiding(chicken);
|
||||||
|
- }
|
||||||
|
- } else if (random.nextFloat() < 0.05) {
|
||||||
|
+ } else { // Purpur - Configurable jockey options
|
||||||
|
Chicken chicken1 = EntityType.CHICKEN.create(this.level(), EntitySpawnReason.JOCKEY);
|
||||||
|
if (chicken1 != null) {
|
||||||
|
chicken1.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F);
|
||||||
|
@@ -565,6 +578,7 @@ public class Zombie extends Monster {
|
||||||
|
this.startRiding(chicken1);
|
||||||
|
level.addFreshEntity(chicken1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit
|
||||||
|
}
|
||||||
|
+ } // Purpur - Configurable jockey options
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||||
|
index 610e5e5330462646034c5667c15245fdb2af77a0..54df75681a89df93f59a589189c7e96b4acc4c77 100644
|
||||||
|
--- a/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||||
|
+++ b/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||||
|
@@ -107,6 +107,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(SynchedEntityData.Builder builder) {
|
||||||
|
super.defineSynchedData(builder);
|
||||||
|
diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||||
|
index 486906b860b3ccbeb1702d9bd7a5d9f11f534b1a..eaa2682de228cf5e9aff22b15f045c9ecbeec77b 100644
|
||||||
|
--- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||||
|
+++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||||
|
@@ -88,6 +88,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
|
||||||
|
public void setPersistentAngerTarget(@Nullable UUID target) {
|
||||||
|
this.persistentAngerTarget = target;
|
||||||
@@ -637,6 +637,9 @@ public class PurpurWorldConfig {
|
|||||||
public double drownedMaxHealth = 20.0D;
|
public double drownedMaxHealth = 20.0D;
|
||||||
public double drownedScale = 1.0D;
|
public double drownedScale = 1.0D;
|
||||||
public double drownedSpawnReinforcements = 0.1D;
|
public double drownedSpawnReinforcements = 0.1D;
|
||||||
|
public boolean drownedJockeyOnlyBaby = true;
|
||||||
|
public double drownedJockeyChance = 0.05D;
|
||||||
|
public boolean drownedJockeyTryExistingChickens = true;
|
||||||
private void drownedSettings() {
|
private void drownedSettings() {
|
||||||
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
|
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
|
||||||
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
|
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
|
||||||
@@ -649,6 +652,9 @@ public class PurpurWorldConfig {
|
|||||||
drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth);
|
drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth);
|
||||||
drownedScale = Mth.clamp(getDouble("mobs.drowned.attributes.scale", drownedScale), 0.0625D, 16.0D);
|
drownedScale = Mth.clamp(getDouble("mobs.drowned.attributes.scale", drownedScale), 0.0625D, 16.0D);
|
||||||
drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements);
|
drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements);
|
||||||
|
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;
|
public boolean elderGuardianRidable = false;
|
||||||
@@ -920,6 +926,9 @@ public class PurpurWorldConfig {
|
|||||||
public double huskMaxHealth = 20.0D;
|
public double huskMaxHealth = 20.0D;
|
||||||
public double huskScale = 1.0D;
|
public double huskScale = 1.0D;
|
||||||
public double huskSpawnReinforcements = 0.1D;
|
public double huskSpawnReinforcements = 0.1D;
|
||||||
|
public boolean huskJockeyOnlyBaby = true;
|
||||||
|
public double huskJockeyChance = 0.05D;
|
||||||
|
public boolean huskJockeyTryExistingChickens = true;
|
||||||
private void huskSettings() {
|
private void huskSettings() {
|
||||||
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
|
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
|
||||||
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
|
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
|
||||||
@@ -932,6 +941,9 @@ public class PurpurWorldConfig {
|
|||||||
huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth);
|
huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth);
|
||||||
huskScale = Mth.clamp(getDouble("mobs.husk.attributes.scale", huskScale), 0.0625D, 16.0D);
|
huskScale = Mth.clamp(getDouble("mobs.husk.attributes.scale", huskScale), 0.0625D, 16.0D);
|
||||||
huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements);
|
huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements);
|
||||||
|
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 illusionerRidable = false;
|
public boolean illusionerRidable = false;
|
||||||
@@ -1831,6 +1843,9 @@ public class PurpurWorldConfig {
|
|||||||
public double zombieMaxHealth = 20.0D;
|
public double zombieMaxHealth = 20.0D;
|
||||||
public double zombieScale = 1.0D;
|
public double zombieScale = 1.0D;
|
||||||
public double zombieSpawnReinforcements = 0.1D;
|
public double zombieSpawnReinforcements = 0.1D;
|
||||||
|
public boolean zombieJockeyOnlyBaby = true;
|
||||||
|
public double zombieJockeyChance = 0.05D;
|
||||||
|
public boolean zombieJockeyTryExistingChickens = true;
|
||||||
private void zombieSettings() {
|
private void zombieSettings() {
|
||||||
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
||||||
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
|
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
|
||||||
@@ -1843,6 +1858,9 @@ public class PurpurWorldConfig {
|
|||||||
zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth);
|
zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth);
|
||||||
zombieScale = Mth.clamp(getDouble("mobs.zombie.attributes.scale", zombieScale), 0.0625D, 16.0D);
|
zombieScale = Mth.clamp(getDouble("mobs.zombie.attributes.scale", zombieScale), 0.0625D, 16.0D);
|
||||||
zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements);
|
zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements);
|
||||||
|
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 zombieHorseRidable = false;
|
public boolean zombieHorseRidable = false;
|
||||||
@@ -1880,6 +1898,9 @@ public class PurpurWorldConfig {
|
|||||||
public double zombieVillagerMaxHealth = 20.0D;
|
public double zombieVillagerMaxHealth = 20.0D;
|
||||||
public double zombieVillagerScale = 1.0D;
|
public double zombieVillagerScale = 1.0D;
|
||||||
public double zombieVillagerSpawnReinforcements = 0.1D;
|
public double zombieVillagerSpawnReinforcements = 0.1D;
|
||||||
|
public boolean zombieVillagerJockeyOnlyBaby = true;
|
||||||
|
public double zombieVillagerJockeyChance = 0.05D;
|
||||||
|
public boolean zombieVillagerJockeyTryExistingChickens = true;
|
||||||
private void zombieVillagerSettings() {
|
private void zombieVillagerSettings() {
|
||||||
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
|
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
|
||||||
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
|
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
|
||||||
@@ -1892,6 +1913,9 @@ public class PurpurWorldConfig {
|
|||||||
zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth);
|
zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth);
|
||||||
zombieVillagerScale = Mth.clamp(getDouble("mobs.zombie_villager.attributes.scale", zombieVillagerScale), 0.0625D, 16.0D);
|
zombieVillagerScale = Mth.clamp(getDouble("mobs.zombie_villager.attributes.scale", zombieVillagerScale), 0.0625D, 16.0D);
|
||||||
zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements);
|
zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements);
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean zombifiedPiglinRidable = false;
|
public boolean zombifiedPiglinRidable = false;
|
||||||
@@ -1900,6 +1924,9 @@ public class PurpurWorldConfig {
|
|||||||
public double zombifiedPiglinMaxHealth = 20.0D;
|
public double zombifiedPiglinMaxHealth = 20.0D;
|
||||||
public double zombifiedPiglinScale = 1.0D;
|
public double zombifiedPiglinScale = 1.0D;
|
||||||
public double zombifiedPiglinSpawnReinforcements = 0.0D;
|
public double zombifiedPiglinSpawnReinforcements = 0.0D;
|
||||||
|
public boolean zombifiedPiglinJockeyOnlyBaby = true;
|
||||||
|
public double zombifiedPiglinJockeyChance = 0.05D;
|
||||||
|
public boolean zombifiedPiglinJockeyTryExistingChickens = true;
|
||||||
private void zombifiedPiglinSettings() {
|
private void zombifiedPiglinSettings() {
|
||||||
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
||||||
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
|
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
|
||||||
@@ -1912,5 +1939,8 @@ public class PurpurWorldConfig {
|
|||||||
zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth);
|
zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth);
|
||||||
zombifiedPiglinScale = Mth.clamp(getDouble("mobs.zombified_piglin.attributes.scale", zombifiedPiglinScale), 0.0625D, 16.0D);
|
zombifiedPiglinScale = Mth.clamp(getDouble("mobs.zombified_piglin.attributes.scale", zombifiedPiglinScale), 0.0625D, 16.0D);
|
||||||
zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements);
|
zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements);
|
||||||
|
zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby);
|
||||||
|
zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance);
|
||||||
|
zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user