Files
Purpur/patches/server/0161-Configurable-entity-base-attributes.patch
2020-12-12 18:32:09 -06:00

2137 lines
102 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <blake.galbreath@gmail.com>
Date: Thu, 10 Dec 2020 16:44:54 -0600
Subject: [PATCH] Configurable entity base attributes
diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java
index bdf4e798ac8ca27edebd0122b894d15a76ecb9d0..65313c2678b1ca480951c5ce4c9799e5e7b6d4eb 100644
--- a/src/main/java/net/minecraft/server/EntityBat.java
+++ b/src/main/java/net/minecraft/server/EntityBat.java
@@ -54,6 +54,14 @@ public class EntityBat extends EntityAmbient {
setMot(mot.a(0.9D));
}
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.batMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java
index ded4e10f5082fb5aa25368d9035affba287c3345..5ea6430ae5cbbdf7972f5addccd96554ba8412e8 100644
--- a/src/main/java/net/minecraft/server/EntityBee.java
+++ b/src/main/java/net/minecraft/server/EntityBee.java
@@ -105,6 +105,14 @@ public class EntityBee extends EntityAnimal implements IEntityAngerable, EntityB
int getPurpurBreedTime() {
return this.world.purpurConfig.beeBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.beeMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java
index dcfad16e06450068d5801fc002c9650102dbf995..ec4a790e48e7df3e36558f2ba49ae00b8b3af7f8 100644
--- a/src/main/java/net/minecraft/server/EntityBlaze.java
+++ b/src/main/java/net/minecraft/server/EntityBlaze.java
@@ -45,6 +45,14 @@ public class EntityBlaze extends EntityMonster {
setMot(mot.a(0.9D));
}
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.blazeMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java
index a6ce4ca27c9670655a8f66bfc624f12659613379..a30e6a456ce6fe4af58a1995bcd919b6010579dc 100644
--- a/src/main/java/net/minecraft/server/EntityCat.java
+++ b/src/main/java/net/minecraft/server/EntityCat.java
@@ -63,6 +63,14 @@ public class EntityCat extends EntityTameableAnimal {
int getPurpurBreedTime() {
return this.world.purpurConfig.catBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.catMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public MinecraftKey eU() {
diff --git a/src/main/java/net/minecraft/server/EntityCaveSpider.java b/src/main/java/net/minecraft/server/EntityCaveSpider.java
index 2e1f2dec17e7761b6534f29bbec813d135250e4f..75a6ca3469d9529eabf5b5f62f242d00aada2b85 100644
--- a/src/main/java/net/minecraft/server/EntityCaveSpider.java
+++ b/src/main/java/net/minecraft/server/EntityCaveSpider.java
@@ -18,6 +18,14 @@ public class EntityCaveSpider extends EntitySpider {
public boolean isRidableInWater() {
return world.purpurConfig.caveSpiderRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.caveSpiderMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public static AttributeProvider.Builder m() {
diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java
index 26f7833496ceaf5c6f67ac7fb276e1f82e51de07..23c9bb43ee4bcd5ad1bc8fe26a7143ebd76532bb 100644
--- a/src/main/java/net/minecraft/server/EntityChicken.java
+++ b/src/main/java/net/minecraft/server/EntityChicken.java
@@ -34,6 +34,8 @@ public class EntityChicken extends EntityAnimal {
if (world.purpurConfig.chickenRetaliate) {
this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(2.0D);
}
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.chickenMaxHealth);
+ setHealth(getMaxHealth());
}
}
diff --git a/src/main/java/net/minecraft/server/EntityCod.java b/src/main/java/net/minecraft/server/EntityCod.java
index 039fae4c29648afa85ea1b27d82cfe51c4165315..2cf4faff8274556e7a377fe3ea193f93e9af54de 100644
--- a/src/main/java/net/minecraft/server/EntityCod.java
+++ b/src/main/java/net/minecraft/server/EntityCod.java
@@ -16,6 +16,14 @@ public class EntityCod extends EntityFishSchool {
public boolean isRidableInWater() {
return true;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.codMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java
index 63497ca0266073dc0a16b7dc22641d08c3eaf400..5924886db49a39206b9814f951798f119a7f41d7 100644
--- a/src/main/java/net/minecraft/server/EntityCow.java
+++ b/src/main/java/net/minecraft/server/EntityCow.java
@@ -26,6 +26,14 @@ public class EntityCow extends EntityAnimal {
int getPurpurBreedTime() {
return this.world.purpurConfig.cowBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.cowMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java
index d186f257fa3bc613be7ec79cd6a6ff2e747cba78..a2448718de61fc3762af69de5ee35cf1a507fcac 100644
--- a/src/main/java/net/minecraft/server/EntityCreeper.java
+++ b/src/main/java/net/minecraft/server/EntityCreeper.java
@@ -96,6 +96,14 @@ public class EntityCreeper extends EntityMonster {
}
return getForward() == 0 && getStrafe() == 0; // do not jump if standing still
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.creeperMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java
index 9d5d143a997b74e0777bb79bf14d341ad5340db9..ff8f4ddfb160ed338c4378d0145bf8696c915dee 100644
--- a/src/main/java/net/minecraft/server/EntityDolphin.java
+++ b/src/main/java/net/minecraft/server/EntityDolphin.java
@@ -63,6 +63,14 @@ public class EntityDolphin extends EntityWaterAnimal {
}
return false;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.dolphinMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Nullable
diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java
index 638efc67d66001ee085957d4698f51a7daac77fc..816c15650561f981522777a9113df448e01a8f15 100644
--- a/src/main/java/net/minecraft/server/EntityDrowned.java
+++ b/src/main/java/net/minecraft/server/EntityDrowned.java
@@ -46,6 +46,14 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity {
public boolean jockeyTryExistingChickens() {
return world.purpurConfig.drownedJockeyTryExistingChickens;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.drownedMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java
index 17a9217ed2d1677371d12b4ab0552378cd71652f..fd1e966d1a50837daa68d8a6c43897355996ae1a 100644
--- a/src/main/java/net/minecraft/server/EntityEnderDragon.java
+++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java
@@ -97,6 +97,14 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster {
public double getMaxY() {
return world.purpurConfig.enderDragonMaxY;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.enderDragonMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public static AttributeProvider.Builder m() {
diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java
index acb2b3ed04ea0bf19335415310ce22cd076dd92a..cf3a607ace5965e5d9324a9163c7c34b8996be7e 100644
--- a/src/main/java/net/minecraft/server/EntityEnderman.java
+++ b/src/main/java/net/minecraft/server/EntityEnderman.java
@@ -40,6 +40,14 @@ public class EntityEnderman extends EntityMonster implements IEntityAngerable {
public boolean isRidableInWater() {
return world.purpurConfig.endermanRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.endermanMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityEndermite.java b/src/main/java/net/minecraft/server/EntityEndermite.java
index 7eef7f523a17434b38492006526920a955fc9120..389ed1cc1b3547f470071cdde8088af57b49f121 100644
--- a/src/main/java/net/minecraft/server/EntityEndermite.java
+++ b/src/main/java/net/minecraft/server/EntityEndermite.java
@@ -22,6 +22,14 @@ public class EntityEndermite extends EntityMonster {
public boolean isRidableInWater() {
return world.purpurConfig.endermiteRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.endermiteMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityEvoker.java b/src/main/java/net/minecraft/server/EntityEvoker.java
index c75dc75611991028e9de6db7c57304e913251a6b..194ed8fc149c96833a88bfdca4e42618c125168f 100644
--- a/src/main/java/net/minecraft/server/EntityEvoker.java
+++ b/src/main/java/net/minecraft/server/EntityEvoker.java
@@ -22,6 +22,14 @@ public class EntityEvoker extends EntityIllagerWizard {
public boolean isRidableInWater() {
return world.purpurConfig.evokerRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.evokerMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java
index e87f5aeb97fc35ff2b3464f31a2ec18432774cd4..2f924721fc1b8937de92b7188bd7fd3cc689f457 100644
--- a/src/main/java/net/minecraft/server/EntityFox.java
+++ b/src/main/java/net/minecraft/server/EntityFox.java
@@ -91,6 +91,14 @@ public class EntityFox extends EntityAnimal {
int getPurpurBreedTime() {
return this.world.purpurConfig.foxBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.foxMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityGhast.java b/src/main/java/net/minecraft/server/EntityGhast.java
index 216506a7b1f97b776ecd4e24f5b2afaf5b79ec2d..a6a0d1ffe6a0cf5e01a6a0145e5bb866365e032d 100644
--- a/src/main/java/net/minecraft/server/EntityGhast.java
+++ b/src/main/java/net/minecraft/server/EntityGhast.java
@@ -41,6 +41,14 @@ public class EntityGhast extends EntityFlying implements IMonster {
setMot(mot.a(0.9D));
}
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.ghastMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java
index 0a7f51a2a1cb10438c9364faf3e4adc6322fc787..01a49898a0f4a8d0813784697002b657cdbd245a 100644
--- a/src/main/java/net/minecraft/server/EntityGuardian.java
+++ b/src/main/java/net/minecraft/server/EntityGuardian.java
@@ -46,6 +46,14 @@ public class EntityGuardian extends EntityMonster {
public boolean isRidableInWater() {
return true;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.guardianMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityGuardianElder.java b/src/main/java/net/minecraft/server/EntityGuardianElder.java
index f6f882746940c9e049106aa9b41591ba27a608ce..07f6baebb65682fe27deaecad12c66bd38014ab1 100644
--- a/src/main/java/net/minecraft/server/EntityGuardianElder.java
+++ b/src/main/java/net/minecraft/server/EntityGuardianElder.java
@@ -26,6 +26,14 @@ public class EntityGuardianElder extends EntityGuardian {
public boolean isRidableInWater() {
return true;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.elderGuardianMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public static AttributeProvider.Builder m() {
diff --git a/src/main/java/net/minecraft/server/EntityHoglin.java b/src/main/java/net/minecraft/server/EntityHoglin.java
index a1578aade4a535144b5e40277c902f2e9ab9e940..2fa388776e68f6f0d4d985a451a0a2b05de499fe 100644
--- a/src/main/java/net/minecraft/server/EntityHoglin.java
+++ b/src/main/java/net/minecraft/server/EntityHoglin.java
@@ -35,6 +35,14 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin {
int getPurpurBreedTime() {
return this.world.purpurConfig.hoglinBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.hoglinMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java
index b19995f962180a44ff388d58a26cc5782d0826e4..0225f57f9d99c53f47a1a086415f9235803c9c9e 100644
--- a/src/main/java/net/minecraft/server/EntityHorse.java
+++ b/src/main/java/net/minecraft/server/EntityHorse.java
@@ -22,6 +22,14 @@ public class EntityHorse extends EntityHorseAbstract {
int getPurpurBreedTime() {
return this.world.purpurConfig.horseBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth(world.purpurConfig.horseMaxHealthMin, world.purpurConfig.horseMaxHealthMax));
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
index bb3ebf70f460c459defda833d6f40026321ad638..049f73b509974d9c7528e1126db325dca83c54b3 100644
--- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java
+++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
@@ -863,6 +863,16 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven
}
+ // Purpur start
+ protected double generateMaxHealth(double min, double max) {
+ int diff = MathHelper.floor(max - min);
+ double base = max - diff;
+ int first = MathHelper.floor((double) diff / 2);
+ int rest = diff - first;
+ return base + random.nextInt(first + 1) + random.nextInt(rest + 1);
+ }
+ // Purpur end
+
protected float fp() {
return 15.0F + (float) this.random.nextInt(8) + (float) this.random.nextInt(9);
}
diff --git a/src/main/java/net/minecraft/server/EntityHorseDonkey.java b/src/main/java/net/minecraft/server/EntityHorseDonkey.java
index f6421bb45c5e6adf39fdc085efe2b2f500b76c0c..44a9cc76d999341373c38e551ee2d58bb5a12458 100644
--- a/src/main/java/net/minecraft/server/EntityHorseDonkey.java
+++ b/src/main/java/net/minecraft/server/EntityHorseDonkey.java
@@ -18,6 +18,14 @@ public class EntityHorseDonkey extends EntityHorseChestedAbstract {
int getPurpurBreedTime() {
return this.world.purpurConfig.donkeyBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth(world.purpurConfig.donkeyMaxHealthMin, world.purpurConfig.donkeyMaxHealthMax));
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityHorseMule.java b/src/main/java/net/minecraft/server/EntityHorseMule.java
index 30cbc505d2b0f4d3247edfd271de8daab023eb2a..d57ed7a9691b953abba5f6db934ce11bdc4a6ff9 100644
--- a/src/main/java/net/minecraft/server/EntityHorseMule.java
+++ b/src/main/java/net/minecraft/server/EntityHorseMule.java
@@ -18,7 +18,16 @@ public class EntityHorseMule extends EntityHorseChestedAbstract {
int getPurpurBreedTime() {
return this.world.purpurConfig.muleBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth(world.purpurConfig.muleMaxHealthMin, world.purpurConfig.muleMaxHealthMax));
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
+
@Override
protected SoundEffect getSoundAmbient() {
super.getSoundAmbient();
diff --git a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
index 408db52cacbdfbca8af0a6a8e913b0128a3f5a76..b4d01a17a34e371231efbaa64732d060ccdd6409 100644
--- a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
+++ b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
@@ -27,6 +27,14 @@ public class EntityHorseSkeleton extends EntityHorseAbstract {
int getPurpurBreedTime() {
return 6000;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.skeletonHorseMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public static AttributeProvider.Builder eL() {
diff --git a/src/main/java/net/minecraft/server/EntityHorseZombie.java b/src/main/java/net/minecraft/server/EntityHorseZombie.java
index 2121a6c979ba2ea7cb596ca6081750d2f8c7df9f..5a89a37e78c174d54c0dabe242252bcf3fd76d5f 100644
--- a/src/main/java/net/minecraft/server/EntityHorseZombie.java
+++ b/src/main/java/net/minecraft/server/EntityHorseZombie.java
@@ -23,6 +23,14 @@ public class EntityHorseZombie extends EntityHorseAbstract {
int getPurpurBreedTime() {
return 6000;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.zombieHorseMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public static AttributeProvider.Builder eL() {
diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java
index 9ee03b233b71d1b4b85a9a5e1f0ea9feb55dfe43..de4a4f4d6a025de5461fcaa68a455d3d47352370 100644
--- a/src/main/java/net/minecraft/server/EntityIronGolem.java
+++ b/src/main/java/net/minecraft/server/EntityIronGolem.java
@@ -32,6 +32,14 @@ public class EntityIronGolem extends EntityGolem implements IEntityAngerable {
public boolean isRidableInWater() {
return world.purpurConfig.ironGolemRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.ironGolemMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java
index 3bc6e6df9e0107debe5b15f5f7aad97ad336f304..1f85da762f90486685359acf97c7c9627c317ef4 100644
--- a/src/main/java/net/minecraft/server/EntityLlama.java
+++ b/src/main/java/net/minecraft/server/EntityLlama.java
@@ -62,6 +62,14 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn
int getPurpurBreedTime() {
return this.world.purpurConfig.llamaBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth(world.purpurConfig.llamaMaxHealthMin, world.purpurConfig.llamaMaxHealthMax));
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public void setStrength(int i) {
diff --git a/src/main/java/net/minecraft/server/EntityLlamaTrader.java b/src/main/java/net/minecraft/server/EntityLlamaTrader.java
index b6aae5cdee1f8bb842ab8e06c47fb497576b464f..592c3cbcf8e19ea556d014e15cf5b3c0b8ce49a5 100644
--- a/src/main/java/net/minecraft/server/EntityLlamaTrader.java
+++ b/src/main/java/net/minecraft/server/EntityLlamaTrader.java
@@ -26,6 +26,14 @@ public class EntityLlamaTrader extends EntityLlama {
public boolean hasSaddle() {
return super.hasSaddle() || isTamed();
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth(world.purpurConfig.llamaTraderMaxHealthMin, world.purpurConfig.llamaTraderMaxHealthMax));
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityMagmaCube.java b/src/main/java/net/minecraft/server/EntityMagmaCube.java
index cd28463e2bf944d94c121c8f8d6e37221754c168..df8f1ee0f2ff1371ace8d54bdb952da41746848d 100644
--- a/src/main/java/net/minecraft/server/EntityMagmaCube.java
+++ b/src/main/java/net/minecraft/server/EntityMagmaCube.java
@@ -23,6 +23,18 @@ public class EntityMagmaCube extends EntitySlime {
public float getJumpHeight() {
return 0.42F * this.getBlockJumpFactor(); // from EntityLiving
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth());
+ setHealth(getMaxHealth());
+ }
+ }
+
+ public String getMaxHealthEquation() {
+ return world.purpurConfig.magmaCubeMaxHealth;
+ }
// Purpur end
public static AttributeProvider.Builder m() {
diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java
index eb1f95d8bae4bc2580849614ba879dd1a8792ecb..aea40b479b3e667447ad13526dc288ad1e0a8c0d 100644
--- a/src/main/java/net/minecraft/server/EntityMushroomCow.java
+++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java
@@ -35,6 +35,14 @@ public class EntityMushroomCow extends EntityCow implements IShearable {
int getPurpurBreedTime() {
return this.world.purpurConfig.mooshroomBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.mooshroomMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java
index a5be10dfb0de08b0d97265278b1f11ad1e94b821..2ff3472ac8c19b55bc216d1965cacbb7d26e173d 100644
--- a/src/main/java/net/minecraft/server/EntityOcelot.java
+++ b/src/main/java/net/minecraft/server/EntityOcelot.java
@@ -31,6 +31,14 @@ public class EntityOcelot extends EntityAnimal {
int getPurpurBreedTime() {
return this.world.purpurConfig.ocelotBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.ocelotMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
private boolean isTrusting() {
diff --git a/src/main/java/net/minecraft/server/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java
index c70180fddb829419b9cc5188766e9130f9b8a94a..3f09d20683383dad32ae58000657ee10a6f49355 100644
--- a/src/main/java/net/minecraft/server/EntityPanda.java
+++ b/src/main/java/net/minecraft/server/EntityPanda.java
@@ -70,6 +70,15 @@ public class EntityPanda extends EntityAnimal {
int getPurpurBreedTime() {
return this.world.purpurConfig.pandaBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.pandaMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ updateAttributes();
+ }
// Purpur end
@Override
@@ -542,9 +551,12 @@ public class EntityPanda extends EntityAnimal {
return this.random.nextBoolean() ? this.getMainGene() : this.getHiddenGene();
}
- public void fg() {
+ public void fg() { updateAttributes(); } public void updateAttributes() { // Purpur - OBFHELPER
if (this.isWeak()) {
- this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(10.0D);
+ // Purpur start
+ AttributeModifiable maxHealth = this.getAttributeInstance(GenericAttributes.MAX_HEALTH);
+ maxHealth.setValue(maxHealth.getValue() / 2);
+ // Purpur end
}
if (this.isLazy()) {
diff --git a/src/main/java/net/minecraft/server/EntityParrot.java b/src/main/java/net/minecraft/server/EntityParrot.java
index 398e92bf7053c411bd98626efe4261e15256d3ee..2561298446d3a797da31a3de3955fb5ec904e8f0 100644
--- a/src/main/java/net/minecraft/server/EntityParrot.java
+++ b/src/main/java/net/minecraft/server/EntityParrot.java
@@ -120,6 +120,14 @@ public class EntityParrot extends EntityPerchable implements EntityBird {
int getPurpurBreedTime() {
return 6000;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.parrotMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Nullable
diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
index f8c3480045e86a18501db223c1b2254cf3298a42..889e388cf13ba0a385ee88a3acd0b813c0776dee 100644
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
@@ -75,6 +75,14 @@ public class EntityPhantom extends EntityFlying implements IMonster {
world.addEntity(flames);
return true;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.phantomMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java
index 7172e8cabf5b715ae9a1087b0d11e6cee81ea6e4..5152a5e4027c36e0326b86776f3331dd61bc16ad 100644
--- a/src/main/java/net/minecraft/server/EntityPig.java
+++ b/src/main/java/net/minecraft/server/EntityPig.java
@@ -34,6 +34,14 @@ public class EntityPig extends EntityAnimal implements ISteerable, ISaddleable {
int getPurpurBreedTime() {
return this.world.purpurConfig.pigBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.pigMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java
index 57f3358b8dfd53f5b1d2e976d64b809f74bc3ce3..a00e56d1fc78f012751a0913dcc221b7a8f3a019 100644
--- a/src/main/java/net/minecraft/server/EntityPigZombie.java
+++ b/src/main/java/net/minecraft/server/EntityPigZombie.java
@@ -46,6 +46,14 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable {
public boolean jockeyTryExistingChickens() {
return world.purpurConfig.zombifiedPiglinJockeyTryExistingChickens;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.zombifiedPiglinMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPiglin.java b/src/main/java/net/minecraft/server/EntityPiglin.java
index 334e0f73e67ef2db7e680874faf0646995d9de8a..16208564e8316cfe8670dcd59624b8b33883ddb6 100644
--- a/src/main/java/net/minecraft/server/EntityPiglin.java
+++ b/src/main/java/net/minecraft/server/EntityPiglin.java
@@ -35,6 +35,14 @@ public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow {
public boolean isRidableInWater() {
return world.purpurConfig.piglinRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.piglinMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPiglinBrute.java b/src/main/java/net/minecraft/server/EntityPiglinBrute.java
index f6b170811159544dc10b91226e4e54b349472c46..b9e965661a869c0b3261c1abb80ced8fbe3bb3d9 100644
--- a/src/main/java/net/minecraft/server/EntityPiglinBrute.java
+++ b/src/main/java/net/minecraft/server/EntityPiglinBrute.java
@@ -25,6 +25,14 @@ public class EntityPiglinBrute extends EntityPiglinAbstract {
public boolean isRidableInWater() {
return world.purpurConfig.piglinBruteRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.piglinBruteMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public static AttributeProvider.Builder eS() {
diff --git a/src/main/java/net/minecraft/server/EntityPillager.java b/src/main/java/net/minecraft/server/EntityPillager.java
index cf7de0127166f6175a6246062c8664e64959edeb..7c19f0a00a0feb0a412ca0d340ef7194bb212314 100644
--- a/src/main/java/net/minecraft/server/EntityPillager.java
+++ b/src/main/java/net/minecraft/server/EntityPillager.java
@@ -23,6 +23,14 @@ public class EntityPillager extends EntityIllagerAbstract implements ICrossbow {
public boolean isRidableInWater() {
return world.purpurConfig.pillagerRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.pillagerMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java
index 40395dd7ea515e51a189d014a3274d15dc1d8ee6..9c72c8f46fe2252239bcd4de078cc9694f2c78de 100644
--- a/src/main/java/net/minecraft/server/EntityPolarBear.java
+++ b/src/main/java/net/minecraft/server/EntityPolarBear.java
@@ -72,6 +72,14 @@ public class EntityPolarBear extends EntityAnimal implements IEntityAngerable {
int getPurpurBreedTime() {
return this.world.purpurConfig.polarBearBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.polarBearMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPufferFish.java b/src/main/java/net/minecraft/server/EntityPufferFish.java
index 16a4df27c557e2d4a0fd4f48317307b884c2688c..8c8a4b0d09380e773a35ec0b91001a99bb7416a9 100644
--- a/src/main/java/net/minecraft/server/EntityPufferFish.java
+++ b/src/main/java/net/minecraft/server/EntityPufferFish.java
@@ -27,6 +27,14 @@ public class EntityPufferFish extends EntityFish {
public boolean isRidableInWater() {
return true;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.pufferfishMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java
index 654cd036a8e4aa4499f10f528b684e003c469c9a..d13ad3e7796b8fc110b187cd0ebe95467c05f8c5 100644
--- a/src/main/java/net/minecraft/server/EntityRabbit.java
+++ b/src/main/java/net/minecraft/server/EntityRabbit.java
@@ -35,6 +35,14 @@ public class EntityRabbit extends EntityAnimal {
int getPurpurBreedTime() {
return this.world.purpurConfig.rabbitBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.rabbitMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
// CraftBukkit start - code from constructor
diff --git a/src/main/java/net/minecraft/server/EntityRavager.java b/src/main/java/net/minecraft/server/EntityRavager.java
index a9021458814d84a3a82088f91956db73562c3b10..787b39b8b84a58aa909983092a59fe6c58cca965 100644
--- a/src/main/java/net/minecraft/server/EntityRavager.java
+++ b/src/main/java/net/minecraft/server/EntityRavager.java
@@ -39,6 +39,14 @@ public class EntityRavager extends EntityRaider {
double speed = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getBaseValue();
getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(speed);
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.ravagerMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntitySalmon.java b/src/main/java/net/minecraft/server/EntitySalmon.java
index 6dfcee2c9b658c2c9ee1179e412389934c066d48..67635a40b243c7b9ea4b04d30d92b3a8ea611c5f 100644
--- a/src/main/java/net/minecraft/server/EntitySalmon.java
+++ b/src/main/java/net/minecraft/server/EntitySalmon.java
@@ -16,6 +16,14 @@ public class EntitySalmon extends EntityFishSchool {
public boolean isRidableInWater() {
return true;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.salmonMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java
index 32130c0681501e3e5a47b199f0bb39daac416ed3..6593d171fe99141843c817f3c926b59c8df37ae4 100644
--- a/src/main/java/net/minecraft/server/EntitySheep.java
+++ b/src/main/java/net/minecraft/server/EntitySheep.java
@@ -71,6 +71,14 @@ public class EntitySheep extends EntityAnimal implements IShearable {
int getPurpurBreedTime() {
return this.world.purpurConfig.sheepBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.sheepMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityShulker.java b/src/main/java/net/minecraft/server/EntityShulker.java
index 30e0e14162cce0c0d228139d4c537243a400ef13..5c0e95a460cec4d146d91564fe9a7af34aa82f30 100644
--- a/src/main/java/net/minecraft/server/EntityShulker.java
+++ b/src/main/java/net/minecraft/server/EntityShulker.java
@@ -39,6 +39,14 @@ public class EntityShulker extends EntityGolem implements IMonster {
public boolean isRidableInWater() {
return world.purpurConfig.shulkerRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.shulkerMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java
index ad428e090089a461283445022b33313520585ac5..dfbd0bff32cf09f0737e272daeb6de6015276620 100644
--- a/src/main/java/net/minecraft/server/EntitySilverfish.java
+++ b/src/main/java/net/minecraft/server/EntitySilverfish.java
@@ -21,6 +21,14 @@ public class EntitySilverfish extends EntityMonster {
public boolean isRidableInWater() {
return world.purpurConfig.silverfishRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.silverfishMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java
index 3f130e03bf8b235360385fd169d4886ffcfa626a..a1fddbdf1a7fbd27732f0457dfdbf2edab76210e 100644
--- a/src/main/java/net/minecraft/server/EntitySkeleton.java
+++ b/src/main/java/net/minecraft/server/EntitySkeleton.java
@@ -16,6 +16,14 @@ public class EntitySkeleton extends EntitySkeletonAbstract {
public boolean isRidableInWater() {
return world.purpurConfig.skeletonRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.skeletonMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntitySkeletonStray.java b/src/main/java/net/minecraft/server/EntitySkeletonStray.java
index d123fb82b635d5271bea9b238554a3011858eeae..bd807058b1607e3086430f651c2095c9c9d8dbaf 100644
--- a/src/main/java/net/minecraft/server/EntitySkeletonStray.java
+++ b/src/main/java/net/minecraft/server/EntitySkeletonStray.java
@@ -18,6 +18,14 @@ public class EntitySkeletonStray extends EntitySkeletonAbstract {
public boolean isRidableInWater() {
return world.purpurConfig.strayRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.strayMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public static boolean a(EntityTypes<EntitySkeletonStray> entitytypes, WorldAccess worldaccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) {
diff --git a/src/main/java/net/minecraft/server/EntitySkeletonWither.java b/src/main/java/net/minecraft/server/EntitySkeletonWither.java
index 96cb080d940db22330598a8806726088b79a53c1..aea8a191c07939ea0e21725ba0bbf0538064f27e 100644
--- a/src/main/java/net/minecraft/server/EntitySkeletonWither.java
+++ b/src/main/java/net/minecraft/server/EntitySkeletonWither.java
@@ -19,6 +19,14 @@ public class EntitySkeletonWither extends EntitySkeletonAbstract {
public boolean isRidableInWater() {
return world.purpurConfig.witherSkeletonRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.witherSkeletonMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java
index 46026362981ce8a3a9e7d63e16230b5425a5d388..12acdc2840ac1db5a8f1facf4350aa42e369eda1 100644
--- a/src/main/java/net/minecraft/server/EntitySlime.java
+++ b/src/main/java/net/minecraft/server/EntitySlime.java
@@ -10,6 +10,7 @@ import com.destroystokyo.paper.event.entity.SlimeChangeDirectionEvent;
import com.destroystokyo.paper.event.entity.SlimeSwimEvent;
import com.destroystokyo.paper.event.entity.SlimeTargetLivingEntityEvent;
import com.destroystokyo.paper.event.entity.SlimeWanderEvent;
+import javax.script.ScriptException;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Slime;
// Paper end
@@ -24,6 +25,7 @@ import org.bukkit.event.entity.SlimeSplitEvent;
public class EntitySlime extends EntityInsentient implements IMonster {
private static final DataWatcherObject<Integer> bo = DataWatcher.a(EntitySlime.class, DataWatcherRegistry.b);
+ private static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur
public float b;
public float c;
public float d;
@@ -63,6 +65,28 @@ public class EntitySlime extends EntityInsentient implements IMonster {
}
return true; // do not jump() in wasd controller, let vanilla controller handle
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth());
+ setHealth(getMaxHealth());
+ }
+ }
+
+ public String getMaxHealthEquation() {
+ return world.purpurConfig.slimeMaxHealth;
+ }
+
+ public double generateMaxHealth() {
+ int size = getSize();
+ try {
+ scriptEngine.eval("size = " + size);
+ return (double) scriptEngine.eval(getMaxHealthEquation());
+ } catch (Exception e) {
+ return size * size;
+ }
+ }
// Purpur end
@Override
@@ -89,7 +113,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
this.datawatcher.set(EntitySlime.bo, i);
this.af();
this.updateSize();
- this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue((double) (i * i));
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth()); // Purpur
this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue((double) (0.2F + 0.1F * (float) i));
this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue((double) i);
if (flag) {
diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java
index e5b3d298f52006f39a36cfdd95097e7b4f89939a..c773c3a9f8ba60d376ca3d321d3d639fba7aa033 100644
--- a/src/main/java/net/minecraft/server/EntitySnowman.java
+++ b/src/main/java/net/minecraft/server/EntitySnowman.java
@@ -24,6 +24,14 @@ public class EntitySnowman extends EntityGolem implements IShearable, IRangedEnt
public boolean isRidableInWater() {
return world.purpurConfig.snowGolemRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.snowGolemMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java
index 92d74137877d096970bf9d1b4fc91beabb862b9d..541b3152101f30cf6283a102b2feee8fbbf31668 100644
--- a/src/main/java/net/minecraft/server/EntitySpider.java
+++ b/src/main/java/net/minecraft/server/EntitySpider.java
@@ -21,6 +21,14 @@ public class EntitySpider extends EntityMonster {
public boolean isRidableInWater() {
return world.purpurConfig.spiderRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.spiderMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java
index cee226501690e1c00983a01ac82bc7384f233c3c..d25e28692be688546fbcedb5acdf36e2aed8aec7 100644
--- a/src/main/java/net/minecraft/server/EntitySquid.java
+++ b/src/main/java/net/minecraft/server/EntitySquid.java
@@ -56,6 +56,14 @@ public class EntitySquid extends EntityWaterAnimal {
public boolean isInWater() {
return this.inWater || world.purpurConfig.squidsCanFly;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.squidMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityStrider.java b/src/main/java/net/minecraft/server/EntityStrider.java
index 9ab1b5af68774fa4d4da89195fdb91172370d43d..1bb33c4169902cf6eb323f79a5d98a1df5726d96 100644
--- a/src/main/java/net/minecraft/server/EntityStrider.java
+++ b/src/main/java/net/minecraft/server/EntityStrider.java
@@ -43,6 +43,14 @@ public class EntityStrider extends EntityAnimal implements ISteerable, ISaddleab
int getPurpurBreedTime() {
return this.world.purpurConfig.striderBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.striderMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public static boolean c(EntityTypes<EntityStrider> entitytypes, GeneratorAccess generatoraccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) {
diff --git a/src/main/java/net/minecraft/server/EntityTropicalFish.java b/src/main/java/net/minecraft/server/EntityTropicalFish.java
index 2c9df356e685ea6f71653023fadcf7e287dcd46e..e52408c5f115d80e91fbde7c73ed308610d02d9d 100644
--- a/src/main/java/net/minecraft/server/EntityTropicalFish.java
+++ b/src/main/java/net/minecraft/server/EntityTropicalFish.java
@@ -29,6 +29,14 @@ public class EntityTropicalFish extends EntityFishSchool {
public boolean isRidableInWater() {
return true;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.tropicalFishMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java
index 067f7f28b02b388d56b93b1ed8274799757196e6..dbbf213a46bf71541dd666be251a01942143e327 100644
--- a/src/main/java/net/minecraft/server/EntityTurtle.java
+++ b/src/main/java/net/minecraft/server/EntityTurtle.java
@@ -42,6 +42,14 @@ public class EntityTurtle extends EntityAnimal {
int getPurpurBreedTime() {
return this.world.purpurConfig.turtleBreedingTicks;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.turtleMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public void setHomePos(BlockPosition blockposition) {
diff --git a/src/main/java/net/minecraft/server/EntityVex.java b/src/main/java/net/minecraft/server/EntityVex.java
index ac75ed3e2e0e0cd8f91de9ff188e173591443b72..6870d175c714d7870072cd1e9825d8e9d8a1588a 100644
--- a/src/main/java/net/minecraft/server/EntityVex.java
+++ b/src/main/java/net/minecraft/server/EntityVex.java
@@ -56,6 +56,14 @@ public class EntityVex extends EntityMonster {
public boolean b(float f, float f1) {
return false; // no fall damage please
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.vexMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index f0a5708f01e49b0cb85230904098d01eaf73a81c..00504af85276f504b5334c881ad6df0702adc959 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -95,6 +95,14 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
public boolean a(EntityHuman entityhuman) {
return world.purpurConfig.villagerCanBeLeashed && !this.isLeashed();
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.villagerMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java
index 3ea66955df304fd13aac2cf9bb93ea156558ae57..63b88871674f7d25f9dc30f6949cd82382ed9129 100644
--- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java
+++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java
@@ -63,6 +63,14 @@ public class EntityVillagerTrader extends EntityVillagerAbstract {
public boolean a(EntityHuman entityhuman) {
return world.purpurConfig.villagerTraderCanBeLeashed && !this.isLeashed();
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.villagerTraderMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur - end
@Nullable
diff --git a/src/main/java/net/minecraft/server/EntityVindicator.java b/src/main/java/net/minecraft/server/EntityVindicator.java
index 9950bda50f405ce44f8fc8d95682e2522cf9e10f..3c906f42379352026187b4c32a5d3574e3a299f3 100644
--- a/src/main/java/net/minecraft/server/EntityVindicator.java
+++ b/src/main/java/net/minecraft/server/EntityVindicator.java
@@ -27,6 +27,14 @@ public class EntityVindicator extends EntityIllagerAbstract {
public boolean isRidableInWater() {
return world.purpurConfig.vindicatorRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.vindicatorMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java
index 323d79a99402b0f6952b4fb873170069f3428953..1809f2ba3f4e676395768c7da71e8917f2f241eb 100644
--- a/src/main/java/net/minecraft/server/EntityWitch.java
+++ b/src/main/java/net/minecraft/server/EntityWitch.java
@@ -34,6 +34,14 @@ public class EntityWitch extends EntityRaider implements IRangedEntity {
public boolean isRidableInWater() {
return world.purpurConfig.witchRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.witchMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java
index fd62dc51258876275adbe02f750fd88107c38a6b..9407ca671638a46bac8f1ee912d26a865751d7b0 100644
--- a/src/main/java/net/minecraft/server/EntityWolf.java
+++ b/src/main/java/net/minecraft/server/EntityWolf.java
@@ -121,6 +121,14 @@ public class EntityWolf extends EntityTameableAnimal implements IEntityAngerable
setCollarColor(world.purpurConfig.wolfDefaultCollarColor);
super.tame(entityhuman);
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.wolfMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityZoglin.java b/src/main/java/net/minecraft/server/EntityZoglin.java
index d92fe8013fb3b43cb7eabdf1c624291b7e881889..067c99f13f2c016b1f753b3eeeda5927007bbf94 100644
--- a/src/main/java/net/minecraft/server/EntityZoglin.java
+++ b/src/main/java/net/minecraft/server/EntityZoglin.java
@@ -31,6 +31,14 @@ public class EntityZoglin extends EntityMonster implements IMonster, IOglin {
public boolean isRidableInWater() {
return world.purpurConfig.zoglinRidableInWater;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.zoglinMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java
index 3ad8bd0847aacabf90e83c00cd7c1a8f51aaa2e4..23c1a6e69e7121f9d831d6dab0356b9679184d98 100644
--- a/src/main/java/net/minecraft/server/EntityZombie.java
+++ b/src/main/java/net/minecraft/server/EntityZombie.java
@@ -67,6 +67,14 @@ public class EntityZombie extends EntityMonster {
public boolean jockeyTryExistingChickens() {
return world.purpurConfig.zombieJockeyTryExistingChickens;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.zombieMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/minecraft/server/EntityZombieHusk.java b/src/main/java/net/minecraft/server/EntityZombieHusk.java
index 02b0ae550a0ed33b5b43beedf3b1405985c58c13..f22419837d5be8277716fc294b0192e7480c58ba 100644
--- a/src/main/java/net/minecraft/server/EntityZombieHusk.java
+++ b/src/main/java/net/minecraft/server/EntityZombieHusk.java
@@ -33,6 +33,14 @@ public class EntityZombieHusk extends EntityZombie {
public boolean jockeyTryExistingChickens() {
return world.purpurConfig.huskJockeyTryExistingChickens;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.huskMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
public static boolean a(EntityTypes<EntityZombieHusk> entitytypes, WorldAccess worldaccess, 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 0c47477b416980d2e932321730525bf5a8feda4f..d6352539a5639db84f5654ba808f74ba3954dc0c 100644
--- a/src/main/java/net/minecraft/server/EntityZombieVillager.java
+++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java
@@ -53,6 +53,14 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo
public boolean jockeyTryExistingChickens() {
return world.purpurConfig.zombieVillagerJockeyTryExistingChickens;
}
+
+ @Override
+ public void initAttributes(World world) {
+ if (world != null) {
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.zombieVillagerMaxHealth);
+ setHealth(getMaxHealth());
+ }
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 26ce1e69a9529aa1741d2ec6aa5dc13c21f58218..7e3c97347b44549059890b611a79c3ede6cf947d 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -473,30 +473,36 @@ public class PurpurWorldConfig {
public boolean batRidable = false;
public boolean batRidableInWater = false;
public double batMaxY = 256D;
+ public double batMaxHealth = 6.0D;
private void batSettings() {
batRidable = getBoolean("mobs.bat.ridable", batRidable);
batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater);
batMaxY = getDouble("mobs.bat.ridable-max-y", batMaxY);
+ batMaxHealth = getDouble("mobs.bat.attributes.max-health", batMaxHealth);
}
public boolean beeRidable = false;
public boolean beeRidableInWater = false;
public double beeMaxY = 256D;
public int beeBreedingTicks = 6000;
+ public double beeMaxHealth = 10.0D;
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
beeMaxY = getDouble("mobs.bee.ridable-max-y", beeMaxY);
beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks);
+ beeMaxHealth = getDouble("mobs.bee.attributes.max-health", beeMaxHealth);
}
public boolean blazeRidable = false;
public boolean blazeRidableInWater = false;
public double blazeMaxY = 256D;
+ public double blazeMaxHealth = 20.0D;
private void blazeSettings() {
blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable);
blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater);
blazeMaxY = getDouble("mobs.blaze.ridable-max-y", blazeMaxY);
+ blazeMaxHealth = getDouble("mobs.blaze.attributes.max-health", blazeMaxHealth);
}
public boolean catRidable = false;
@@ -505,6 +511,7 @@ public class PurpurWorldConfig {
public int catSpawnSwampHutScanRange = 16;
public int catSpawnVillageScanRange = 48;
public int catBreedingTicks = 6000;
+ public double catMaxHealth = 10.0D;
private void catSettings() {
catRidable = getBoolean("mobs.cat.ridable", catRidable);
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
@@ -512,51 +519,62 @@ public class PurpurWorldConfig {
catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange);
catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange);
catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks);
+ catMaxHealth = getDouble("mobs.cat.attributes.max-health", catMaxHealth);
}
public boolean caveSpiderRidable = false;
public boolean caveSpiderRidableInWater = false;
+ public double caveSpiderMaxHealth = 12.0D;
private void caveSpiderSettings() {
caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable);
caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater);
+ caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max-health", caveSpiderMaxHealth);
}
public boolean chickenRidable = false;
public boolean chickenRidableInWater = false;
public boolean chickenRetaliate = false;
public int chickenBreedingTicks = 6000;
+ public double chickenMaxHealth = 4.0D;
private void chickenSettings() {
chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater);
chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks);
+ chickenMaxHealth = getDouble("mobs.chicken.attributes.max-health", chickenMaxHealth);
}
public boolean codRidable = false;
+ public double codMaxHealth = 3.0D;
private void codSettings() {
codRidable = getBoolean("mobs.cod.ridable", codRidable);
+ codMaxHealth = getDouble("mobs.cod.attributes.max-health", codMaxHealth);
}
public boolean cowRidable = false;
public boolean cowRidableInWater = false;
public int cowFeedMushrooms = 0;
public int cowBreedingTicks = 6000;
+ public double cowMaxHealth = 10.0D;
private void cowSettings() {
cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater);
cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks);
+ cowMaxHealth = getDouble("mobs.cow.attributes.max-health", cowMaxHealth);
}
public boolean creeperRidable = false;
public boolean creeperRidableInWater = false;
public boolean creeperAllowGriefing = true;
public double creeperChargedChance = 0.0D;
+ public double creeperMaxHealth = 20.0D;
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
+ creeperMaxHealth = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth);
}
public boolean dolphinRidable = false;
@@ -564,19 +582,25 @@ public class PurpurWorldConfig {
public float dolphinSpitSpeed = 1.0F;
public float dolphinSpitDamage = 2.0F;
public boolean dolphinDisableTreasureSearching = false;
+ public double dolphinMaxHealth = 10.0D;
private void dolphinSettings() {
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown);
dolphinSpitSpeed = (float) getDouble("mobs.dolphin.spit.speed", dolphinSpitSpeed);
dolphinSpitDamage = (float) getDouble("mobs.dolphin.spit.damage", dolphinSpitDamage);
dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
+ dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max-health", dolphinMaxHealth);
}
public boolean donkeyRidableInWater = false;
public int donkeyBreedingTicks = 6000;
+ public double donkeyMaxHealthMin = 15.0D;
+ public double donkeyMaxHealthMax = 30.0D;
private void donkeySettings() {
donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater);
donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks);
+ donkeyMaxHealthMin = getDouble("mobs.donkey.attributes.max-health.min", donkeyMaxHealthMin);
+ donkeyMaxHealthMax = getDouble("mobs.donkey.attributes.max-health.max", donkeyMaxHealthMax);
}
public boolean drownedRidable = false;
@@ -584,17 +608,21 @@ public class PurpurWorldConfig {
public boolean drownedJockeyOnlyBaby = true;
public double drownedJockeyChance = 0.05D;
public boolean drownedJockeyTryExistingChickens = true;
+ public double drownedMaxHealth = 20.0D;
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby);
drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance);
drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens);
+ drownedMaxHealth = getDouble("mobs.drowned.attributes.max-health", drownedMaxHealth);
}
public boolean elderGuardianRidable = false;
+ public double elderGuardianMaxHealth = 80.0D;
private void elderGuardianSettings() {
elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable);
+ elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max-health", elderGuardianMaxHealth);
}
public boolean enderDragonRidable = false;
@@ -602,57 +630,74 @@ public class PurpurWorldConfig {
public double enderDragonMaxY = 256D;
public boolean enderDragonAlwaysDropsEggBlock = false;
public boolean enderDragonAlwaysDropsFullExp = false;
+ public double enderDragonMaxHealth = 200.0D;
private void enderDragonSettings() {
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
enderDragonMaxY = getDouble("mobs.ender_dragon.ridable-max-y", enderDragonMaxY);
enderDragonAlwaysDropsEggBlock = getBoolean("mobs.ender_dragon.always-drop-egg-block", enderDragonAlwaysDropsEggBlock);
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
+ if (PurpurConfig.version < 8) {
+ double oldValue = getDouble("mobs.ender_dragon.max-health", enderDragonMaxHealth);
+ set("mobs.ender_dragon.attributes.max-health", oldValue);
+ set("mobs.ender_dragon.max-health", null);
+ }
+ enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max-health", enderDragonMaxHealth);
}
public boolean endermanRidable = false;
public boolean endermanRidableInWater = false;
public boolean endermanAllowGriefing = true;
public boolean endermanDespawnEvenWithBlock = false;
+ public double endermanMaxHealth = 40.0D;
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock);
+ endermanMaxHealth = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth);
}
public boolean endermiteRidable = false;
public boolean endermiteRidableInWater = false;
+ public double endermiteMaxHealth = 8.0D;
private void endermiteSettings() {
endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable);
endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater);
+ endermiteMaxHealth = getDouble("mobs.endermite.attributes.max-health", endermiteMaxHealth);
}
public boolean evokerRidable = false;
public boolean evokerRidableInWater = false;
+ public double evokerMaxHealth = 24.0D;
private void evokerSettings() {
evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable);
evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater);
+ evokerMaxHealth = getDouble("mobs.evoker.attributes.max-health", evokerMaxHealth);
}
public boolean foxRidable = false;
public boolean foxRidableInWater = false;
public boolean foxTypeChangesWithTulips = false;
public int foxBreedingTicks = 6000;
+ public double foxMaxHealth = 10.0D;
private void foxSettings() {
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks);
+ foxMaxHealth = getDouble("mobs.fox.attributes.max-health", foxMaxHealth);
}
public boolean ghastRidable = false;
public boolean ghastRidableInWater = false;
public double ghastMaxY = 256D;
+ public double ghastMaxHealth = 10.0D;
private void ghastSettings() {
ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable);
ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater);
ghastMaxY = getDouble("mobs.ghast.ridable-max-y", ghastMaxY);
+ ghastMaxHealth = getDouble("mobs.ghast.attributes.max-health", ghastMaxHealth);
}
public boolean giantRidable = false;
@@ -682,24 +727,32 @@ public class PurpurWorldConfig {
}
public boolean guardianRidable = false;
+ public double guardianMaxHealth = 30.0D;
private void guardianSettings() {
guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable);
+ guardianMaxHealth = getDouble("mobs.guardian.attributes.max-health", guardianMaxHealth);
}
public boolean hoglinRidable = false;
public boolean hoglinRidableInWater = false;
public int hoglinBreedingTicks = 6000;
+ public double hoglinMaxHealth = 40.0D;
private void hoglinSettings() {
hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable);
hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater);
hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks);
+ hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max-health", hoglinMaxHealth);
}
public boolean horseRidableInWater = false;
public int horseBreedingTicks = 6000;
+ public double horseMaxHealthMin = 15.0D;
+ public double horseMaxHealthMax = 30.0D;
private void horseSettings() {
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks);
+ horseMaxHealthMin = getDouble("mobs.horse.attributes.max-health.min", horseMaxHealthMin);
+ horseMaxHealthMax = getDouble("mobs.horse.attributes.max-health.max", horseMaxHealthMax);
}
public boolean huskRidable = false;
@@ -707,12 +760,14 @@ public class PurpurWorldConfig {
public boolean huskJockeyOnlyBaby = true;
public double huskJockeyChance = 0.05D;
public boolean huskJockeyTryExistingChickens = true;
+ public double huskMaxHealth = 20.0D;
private void huskSettings() {
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby);
huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance);
huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
+ huskMaxHealth = getDouble("mobs.husk.attributes.max-health", huskMaxHealth);
}
public boolean illusionerRidable = false;
@@ -736,76 +791,100 @@ public class PurpurWorldConfig {
public boolean ironGolemRidable = false;
public boolean ironGolemRidableInWater = false;
public boolean ironGolemCanSwim = false;
+ public double ironGolemMaxHealth = 100.0D;
private void ironGolemSettings() {
ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable);
ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater);
ironGolemCanSwim = getBoolean("mobs.iron_golem.can-swim", ironGolemCanSwim);
+ ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max-health", ironGolemMaxHealth);
}
public boolean llamaRidable = false;
public boolean llamaRidableInWater = false;
public int llamaBreedingTicks = 6000;
+ public double llamaMaxHealthMin = 15.0D;
+ public double llamaMaxHealthMax = 30.0D;
private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks);
+ llamaMaxHealthMin = getDouble("mobs.llama.attributes.max-health.min", llamaMaxHealthMin);
+ llamaMaxHealthMax = getDouble("mobs.llama.attributes.max-health.max", llamaMaxHealthMax);
}
public boolean llamaTraderRidable = false;
public boolean llamaTraderRidableInWater = false;
+ public double llamaTraderMaxHealthMin = 15.0D;
+ public double llamaTraderMaxHealthMax = 30.0D;
private void llamaTraderSettings() {
llamaTraderRidable = getBoolean("mobs.trader_llama.ridable", llamaTraderRidable);
llamaTraderRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", llamaTraderRidableInWater);
+ llamaTraderMaxHealthMin = getDouble("mobs.trader_llama.attributes.max-health.min", llamaTraderMaxHealthMin);
+ llamaTraderMaxHealthMax = getDouble("mobs.trader_llama.attributes.max-health.max", llamaTraderMaxHealthMax);
}
public boolean magmaCubeRidable = false;
public boolean magmaCubeRidableInWater = false;
+ public String magmaCubeMaxHealth = "size * size";
private void magmaCubeSettings() {
magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable);
magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater);
+ magmaCubeMaxHealth = getString("mobs.magma_cube.attributes.max-health", magmaCubeMaxHealth);
}
public boolean mooshroomRidable = false;
public boolean mooshroomRidableInWater = false;
public int mooshroomBreedingTicks = 6000;
+ public double mooshroomMaxHealth = 10.0D;
private void mooshroomSettings() {
mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable);
mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater);
mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks);
+ mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max-health", mooshroomMaxHealth);
}
public boolean muleRidableInWater = false;
public int muleBreedingTicks = 6000;
+ public double muleMaxHealthMin = 15.0D;
+ public double muleMaxHealthMax = 30.0D;
private void muleSettings() {
muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater);
muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks);
+ muleMaxHealthMin = getDouble("mobs.mule.attributes.max-health.min", muleMaxHealthMin);
+ muleMaxHealthMax = getDouble("mobs.mule.attributes.max-health.max", muleMaxHealthMax);
}
public boolean ocelotRidable = false;
public boolean ocelotRidableInWater = false;
public int ocelotBreedingTicks = 6000;
+ public double ocelotMaxHealth = 10.0D;
private void ocelotSettings() {
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater);
ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks);
+ ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max-health", ocelotMaxHealth);
}
public boolean pandaRidable = false;
public boolean pandaRidableInWater = false;
public int pandaBreedingTicks = 6000;
+ public double pandaMaxHealth = 20.0D;
private void pandaSettings() {
pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable);
pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater);
pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks);
+ pandaMaxHealth = getDouble("mobs.panda.attributes.max-health", pandaMaxHealth);
}
public boolean parrotRidable = false;
public boolean parrotRidableInWater = false;
public double parrotMaxY = 256D;
+ public double parrotMaxHealth = 6.0D;
private void parrotSettings() {
parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable);
parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater);
parrotMaxY = getDouble("mobs.parrot.ridable-max-y", parrotMaxY);
+ parrotMaxHealth = getDouble("mobs.parrot.attributes.max-health", parrotMaxHealth);
}
public boolean phantomRidable = false;
@@ -831,6 +910,7 @@ public class PurpurWorldConfig {
public int phantomBurnInLight = 0;
public boolean phantomIgnorePlayersWithTorch = false;
public boolean phantomBurnInDaylight = true;
+ public double phantomMaxHealth = 20.0D;
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
@@ -855,38 +935,47 @@ public class PurpurWorldConfig {
phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight);
phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight);
phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch);
+ phantomMaxHealth = getDouble("mobs.phantom.attributes.max-health", phantomMaxHealth);
}
public boolean pigRidable = false;
public boolean pigRidableInWater = false;
public boolean pigGiveSaddleBack = false;
public int pigBreedingTicks = 6000;
+ public double pigMaxHealth = 10.0D;
private void pigSettings() {
pigRidable = getBoolean("mobs.pig.ridable", pigRidable);
pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater);
pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack);
pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks);
+ pigMaxHealth = getDouble("mobs.pig.attributes.max-health", pigMaxHealth);
}
public boolean piglinRidable = false;
public boolean piglinRidableInWater = false;
+ public double piglinMaxHealth = 16.0D;
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
+ piglinMaxHealth = getDouble("mobs.piglin.attributes.max-health", piglinMaxHealth);
}
public boolean piglinBruteRidable = false;
public boolean piglinBruteRidableInWater = false;
+ public double piglinBruteMaxHealth = 50.0D;
private void piglinBruteSettings() {
piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable);
piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater);
+ piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max-health", piglinBruteMaxHealth);
}
public boolean pillagerRidable = false;
public boolean pillagerRidableInWater = false;
+ public double pillagerMaxHealth = 24.0D;
private void pillagerSettings() {
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
+ pillagerMaxHealth = getDouble("mobs.pillager.attributes.max-health", pillagerMaxHealth);
}
public boolean polarBearRidable = false;
@@ -894,6 +983,7 @@ public class PurpurWorldConfig {
public String polarBearBreedableItemString = "";
public Item polarBearBreedableItem = null;
public int polarBearBreedingTicks = 6000;
+ public double polarBearMaxHealth = 30.0D;
private void polarBearSettings() {
polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable);
polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater);
@@ -901,11 +991,14 @@ public class PurpurWorldConfig {
Item item = IRegistry.ITEM.get(new MinecraftKey(polarBearBreedableItemString));
if (item != Items.AIR) polarBearBreedableItem = item;
polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks);
+ polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max-health", polarBearMaxHealth);
}
public boolean pufferfishRidable = false;
+ public double pufferfishMaxHealth = 3.0D;
private void pufferfishSettings() {
pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable);
+ pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max-health", pufferfishMaxHealth);
}
public boolean rabbitRidable = false;
@@ -913,68 +1006,86 @@ public class PurpurWorldConfig {
public double rabbitNaturalToast = 0.0D;
public double rabbitNaturalKiller = 0.0D;
public int rabbitBreedingTicks = 6000;
+ public double rabbitMaxHealth = 3.0D;
private void rabbitSettings() {
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast);
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks);
+ rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max-health", rabbitMaxHealth);
}
public boolean ravagerRidable = false;
public boolean ravagerRidableInWater = false;
+ public double ravagerMaxHealth = 100.0D;
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
+ ravagerMaxHealth = getDouble("mobs.ravager.attributes.max-health", ravagerMaxHealth);
}
public boolean salmonRidable = false;
+ public double salmonMaxHealth = 3.0D;
private void salmonSettings() {
salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable);
+ salmonMaxHealth = getDouble("mobs.salmon.attributes.max-health", salmonMaxHealth);
}
public boolean sheepRidable = false;
public boolean sheepRidableInWater = false;
public int sheepBreedingTicks = 6000;
+ public double sheepMaxHealth = 8.0D;
private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks);
+ sheepMaxHealth = getDouble("mobs.sheep.attributes.max-health", sheepMaxHealth);
}
public boolean shulkerRidable = false;
public boolean shulkerRidableInWater = false;
+ public double shulkerMaxHealth = 30.0D;
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
+ shulkerMaxHealth = getDouble("mobs.shulker.attributes.max-health", shulkerMaxHealth);
}
public boolean silverfishRidable = false;
public boolean silverfishRidableInWater = false;
+ public double silverfishMaxHealth = 8.0D;
private void silverfishSettings() {
silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable);
silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater);
+ silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max-health", silverfishMaxHealth);
}
public boolean skeletonRidable = false;
public boolean skeletonRidableInWater = false;
+ public double skeletonMaxHealth = 20.0D;
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
+ skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max-health", skeletonMaxHealth);
}
public boolean skeletonHorseCanSwim = false;
public boolean skeletonHorseRidableInWater = true;
+ public double skeletonHorseMaxHealth = 15.0D;
private void skeletonHorseSettings() {
skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim);
skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater);
+ skeletonHorseMaxHealth = getDouble("mobs.skeleton_horse.attributes.max-health", skeletonHorseMaxHealth);
}
public boolean slimeRidable = false;
public boolean slimeRidableInWater = false;
+ public String slimeMaxHealth = "size * size";
private void slimeSettings() {
slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable);
slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater);
+ slimeMaxHealth = getString("mobs.slime.attributes.max-health", slimeMaxHealth);
}
public boolean snowGolemRidable = false;
@@ -986,6 +1097,7 @@ public class PurpurWorldConfig {
public int snowGolemSnowBallMax = 20;
public float snowGolemSnowBallModifier = 10.0F;
public double snowGolemAttackDistance = 1.25D;
+ public double snowGolemMaxHealth = 4.0D;
private void snowGolemSettings() {
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
@@ -996,63 +1108,78 @@ public class PurpurWorldConfig {
snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax);
snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier);
snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance);
+ snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max-health", snowGolemMaxHealth);
}
public boolean squidRidable = false;
public boolean squidImmuneToEAR = true;
public double squidOffsetWaterCheck = 0.0D;
public boolean squidsCanFly = false;
+ public double squidMaxHealth = 10.0D;
private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly);
+ squidMaxHealth = getDouble("mobs.squid.attributes.max-health", squidMaxHealth);
}
public boolean spiderRidable = false;
public boolean spiderRidableInWater = false;
+ public double spiderMaxHealth = 16.0D;
private void spiderSettings() {
spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable);
spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater);
+ spiderMaxHealth = getDouble("mobs.spider.attributes.max-health", spiderMaxHealth);
}
public boolean strayRidable = false;
public boolean strayRidableInWater = false;
+ public double strayMaxHealth = 20.0D;
private void straySettings() {
strayRidable = getBoolean("mobs.stray.ridable", strayRidable);
strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater);
+ strayMaxHealth = getDouble("mobs.stray.attributes.max-health", strayMaxHealth);
}
public boolean striderRidable = false;
public boolean striderRidableInWater = false;
public int striderBreedingTicks = 6000;
+ public double striderMaxHealth = 20.0D;
private void striderSettings() {
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks);
+ striderMaxHealth = getDouble("mobs.strider.attributes.max-health", striderMaxHealth);
}
public boolean tropicalFishRidable = false;
+ public double tropicalFishMaxHealth = 3.0D;
private void tropicalFishSettings() {
tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable);
+ tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max-health", tropicalFishMaxHealth);
}
public boolean turtleRidable = false;
public boolean turtleRidableInWater = false;
public int turtleBreedingTicks = 6000;
+ public double turtleMaxHealth = 30.0D;
private void turtleSettings() {
turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable);
turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater);
turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks);
+ turtleMaxHealth = getDouble("mobs.turtle.attributes.max-health", turtleMaxHealth);
}
public boolean vexRidable = false;
public boolean vexRidableInWater = false;
public double vexMaxY = 256D;
+ public double vexMaxHealth = 14.0D;
private void vexSettings() {
vexRidable = getBoolean("mobs.vex.ridable", vexRidable);
vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater);
vexMaxY = getDouble("mobs.vex.ridable-max-y", vexMaxY);
+ vexMaxHealth = getDouble("mobs.vex.attributes.max-health", vexMaxHealth);
}
public boolean villagerRidable = false;
@@ -1068,6 +1195,7 @@ public class PurpurWorldConfig {
public boolean villagerLobotomize1x1 = false;
public boolean villagerClericsFarmWarts = false;
public boolean villagerClericFarmersThrowWarts = true;
+ public double villagerMaxHealth = 20.0D;
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -1082,33 +1210,40 @@ public class PurpurWorldConfig {
villagerLobotomize1x1 = getBoolean("mobs.villager.lobotomize-1x1", villagerLobotomize1x1);
villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts);
villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts);
+ villagerMaxHealth = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth);
}
public boolean villagerTraderRidable = false;
public boolean villagerTraderRidableInWater = false;
public boolean villagerTraderCanBeLeashed = false;
public boolean villagerTraderFollowEmeraldBlock = false;
+ public double villagerTraderMaxHealth = 20.0D;
private void villagerTraderSettings() {
villagerTraderRidable = getBoolean("mobs.wandering_trader.ridable", villagerTraderRidable);
villagerTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", villagerTraderRidableInWater);
villagerTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", villagerTraderCanBeLeashed);
villagerTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", villagerTraderFollowEmeraldBlock);
+ villagerTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max-health", villagerTraderMaxHealth);
}
public boolean vindicatorRidable = false;
public boolean vindicatorRidableInWater = false;
public double vindicatorJohnnySpawnChance = 0D;
+ public double vindicatorMaxHealth = 24.0D;
private void vindicatorSettings() {
vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable);
vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater);
vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance);
+ vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max-health", vindicatorMaxHealth);
}
public boolean witchRidable = false;
public boolean witchRidableInWater = false;
+ public double witchMaxHealth = 26.0D;
private void witchSettings() {
witchRidable = getBoolean("mobs.witch.ridable", witchRidable);
witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater);
+ witchMaxHealth = getDouble("mobs.witch.attributes.max-health", witchMaxHealth);
}
public boolean witherRidable = false;
@@ -1134,10 +1269,12 @@ public class PurpurWorldConfig {
public boolean witherSkeletonRidable = false;
public boolean witherSkeletonRidableInWater = false;
public boolean witherSkeletonTakesWitherDamage = false;
+ public double witherSkeletonMaxHealth = 20.0D;
private void witherSkeletonSettings() {
witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable);
witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater);
witherSkeletonTakesWitherDamage = getBoolean("mobs.wither_skeleton.takes-wither-damage", witherSkeletonTakesWitherDamage);
+ witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max-health", witherSkeletonMaxHealth);
}
public boolean wolfRidable = false;
@@ -1146,6 +1283,7 @@ public class PurpurWorldConfig {
public boolean wolfMilkCuresRabies = true;
public double wolfNaturalRabid = 0.0D;
public int wolfBreedingTicks = 6000;
+ public double wolfMaxHealth = 8.0D;
private void wolfSettings() {
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater);
@@ -1157,13 +1295,16 @@ public class PurpurWorldConfig {
wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies);
wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid);
wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks);
+ wolfMaxHealth = getDouble("mobs.wolf.attributes.max-health", wolfMaxHealth);
}
public boolean zoglinRidable = false;
public boolean zoglinRidableInWater = false;
+ public double zoglinMaxHealth = 40.0D;
private void zoglinSettings() {
zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable);
zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater);
+ zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max-health", zoglinMaxHealth);
}
public boolean zombieRidable = false;
@@ -1173,6 +1314,7 @@ public class PurpurWorldConfig {
public boolean zombieJockeyTryExistingChickens = true;
public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
public EnumDifficulty zombieBreakDoorMinDifficulty = EnumDifficulty.HARD;
+ public double zombieMaxHealth = 20.0D;
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
@@ -1185,15 +1327,18 @@ public class PurpurWorldConfig {
} catch (IllegalArgumentException ignore) {
zombieBreakDoorMinDifficulty = EnumDifficulty.HARD;
}
+ zombieMaxHealth = getDouble("mobs.zombie.attributes.max-health", zombieMaxHealth);
}
public boolean zombieHorseCanSwim = false;
public boolean zombieHorseRidableInWater = false;
public double zombieHorseSpawnChance = 0.0D;
+ public double zombieHorseMaxHealth = 15.0D;
private void zombieHorseSettings() {
zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim);
zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater);
zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance);
+ zombieHorseMaxHealth = getDouble("mobs.zombie_horse.attributes.max-health", zombieHorseMaxHealth);
}
public boolean zombifiedPiglinRidable = false;
@@ -1202,6 +1347,7 @@ public class PurpurWorldConfig {
public double zombifiedPiglinJockeyChance = 0.05D;
public boolean zombifiedPiglinJockeyTryExistingChickens = true;
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true;
+ public double zombifiedPiglinMaxHealth = 20.0D;
private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
@@ -1209,6 +1355,7 @@ public class PurpurWorldConfig {
zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance);
zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens);
zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry);
+ zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max-health", zombifiedPiglinMaxHealth);
}
public boolean zombieVillagerRidable = false;
@@ -1216,11 +1363,13 @@ public class PurpurWorldConfig {
public boolean zombieVillagerJockeyOnlyBaby = true;
public double zombieVillagerJockeyChance = 0.05D;
public boolean zombieVillagerJockeyTryExistingChickens = true;
+ public double zombieVillagerMaxHealth = 20.0D;
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
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);
+ zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max-health", zombieVillagerMaxHealth);
}
}