mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 08:57:44 +01:00
284 lines
14 KiB
Diff
284 lines
14 KiB
Diff
From a15dc515cc9b8cfda7d7d6f5e03308dd35452887 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
|
|
|
|
---
|
|
.../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 63f5969b1..f32950cc9 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 227fff3f1..c78876fc4 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 95ae6f349..e60e4adc1 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<EntityChicken> 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<EntityChicken> 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 db252ba4e..e8b099d6c 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<EntityZombieHusk> 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 ebbfcb75a..8532385d8 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 6ca47dfaa..15ec90967 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -410,10 +410,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;
|
|
@@ -524,10 +530,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;
|
|
@@ -932,11 +944,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;
|
|
@@ -952,19 +970,31 @@ public class PurpurWorldConfig {
|
|
public boolean zombiePigmanRidableInWater = false;
|
|
public boolean zombiePigmanRequireShiftToMount = true;
|
|
public boolean zombiePigmanDontTargetUnlessHit = false;
|
|
+ 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);
|
|
zombiePigmanDontTargetUnlessHit = getBoolean("mobs.zombie_pigman.dont-target-unless-hit", zombiePigmanDontTargetUnlessHit);
|
|
+ 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
|
|
|