mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-06-21 17:57:50 +02:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@70f253f3 Update ItemType PaperMC/Paper@774a32e8 sulfur cube archetype registry PaperMC/Paper@f2ebae60 update legacy ItemType generic type PaperMC/Paper@93feb440 deprecate PigZapEvent PaperMC/Paper@73725c6b update to pre-5 PaperMC/Paper@5357d03b fix serialization error when creating empty flat world PaperMC/Paper@620da256 expand CreeperIgniteEvent to cover minecart tnt and sulfur cube
1938 lines
98 KiB
Diff
1938 lines
98 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
|
Date: Thu, 10 Dec 2020 16:44:54 -0600
|
|
Subject: [PATCH] Configurable entity base attributes
|
|
|
|
|
|
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
|
index 2d856ba2ce8c6febdc1d5dd2df2718fbe4e1312d..55f7761ad757cc4eebbf1271e0d284bc31db753e 100644
|
|
--- a/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -310,6 +310,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
|
protected LivingEntity(final EntityType<? extends LivingEntity> type, final Level level) {
|
|
super(type, level);
|
|
this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur - Ridables
|
|
+ this.initAttributes(); // Purpur - Configurable entity base attributes
|
|
this.craftAttributes = new org.bukkit.craftbukkit.attribute.CraftAttributeMap(this.attributes); // CraftBukkit
|
|
// CraftBukkit - this.setHealth(this.getMaxHealth()) inlined and simplified to skip the instanceof check for Player, as getBukkitEntity() is not initialized in constructor
|
|
this.entityData.set(LivingEntity.DATA_HEALTH_ID, this.getMaxHealth());
|
|
@@ -331,6 +332,8 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
|
return new EntityEquipment();
|
|
}
|
|
|
|
+ protected void initAttributes() {}// Purpur - Configurable entity base attributes
|
|
+
|
|
public Brain<? extends LivingEntity> getBrain() {
|
|
return (Brain<? extends LivingEntity>)this.brain;
|
|
}
|
|
diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java
|
|
index 9861837c1d10e5ffe5dada9f4a75fb9adaccc161..cb242c69be97e0927dd62714f1a9b112c0dec84b 100644
|
|
--- a/net/minecraft/world/entity/ambient/Bat.java
|
|
+++ b/net/minecraft/world/entity/ambient/Bat.java
|
|
@@ -94,6 +94,21 @@ public class Bat extends AmbientCreature {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.batMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.batScale);
|
|
+ this.getAttribute(Attributes.FOLLOW_RANGE).setBaseValue(this.level().purpurConfig.batFollowRange);
|
|
+ this.getAttribute(Attributes.KNOCKBACK_RESISTANCE).setBaseValue(this.level().purpurConfig.batKnockbackResistance);
|
|
+ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.level().purpurConfig.batMovementSpeed);
|
|
+ this.getAttribute(Attributes.FLYING_SPEED).setBaseValue(this.level().purpurConfig.batFlyingSpeed);
|
|
+ this.getAttribute(Attributes.ARMOR).setBaseValue(this.level().purpurConfig.batArmor);
|
|
+ this.getAttribute(Attributes.ARMOR_TOUGHNESS).setBaseValue(this.level().purpurConfig.batArmorToughness);
|
|
+ this.getAttribute(Attributes.ATTACK_KNOCKBACK).setBaseValue(this.level().purpurConfig.batAttackKnockback);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public boolean isFlapping() {
|
|
return !this.isResting() && this.tickCount % 10.0F == 0.0F;
|
|
diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java
|
|
index ca1f1d18b765db8d197f70977e0e175744b07ee4..9206c45b9789ff2834f14efb65dc85113c7bd7d7 100644
|
|
--- a/net/minecraft/world/entity/animal/allay/Allay.java
|
|
+++ b/net/minecraft/world/entity/animal/allay/Allay.java
|
|
@@ -155,6 +155,14 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.allayMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.allayScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected Brain<Allay> makeBrain(final Brain.Packed packedBrain) {
|
|
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
|
|
diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
|
index e417fa354f22e3532d3bfda9c9ebfccfd4906bc6..9f0e074df58d8b8484aa8be5cb0bc8941cee0f96 100644
|
|
--- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
|
+++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
|
@@ -110,6 +110,14 @@ public class Armadillo extends Animal {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.armadilloMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.armadilloScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
|
super.defineSynchedData(entityData);
|
|
diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
|
index ed0d11c8048c3c6b25a003633684b89376b76be9..2752e906f2a98540d6fd33cd5f080f376e6e3f86 100644
|
|
--- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
|
+++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
|
@@ -139,6 +139,14 @@ public class Axolotl extends Animal implements Bucketable {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.axolotlMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.axolotlScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
|
|
return 0.0F;
|
|
diff --git a/net/minecraft/world/entity/animal/bee/Bee.java b/net/minecraft/world/entity/animal/bee/Bee.java
|
|
index ec110b0dcef5ae0923cdda8aa43720f10b9f826e..6022df0a91e46b0a7a0102b959a1eb2b18c1de63 100644
|
|
--- a/net/minecraft/world/entity/animal/bee/Bee.java
|
|
+++ b/net/minecraft/world/entity/animal/bee/Bee.java
|
|
@@ -477,6 +477,14 @@ public class Bee extends Animal implements NeutralMob {
|
|
return beehiveBlockEntity != null && beehiveBlockEntity.isFireNearby();
|
|
}
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.beeMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.beeScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public long getPersistentAngerEndTime() {
|
|
return this.entityData.get(DATA_ANGER_END_TIME);
|
|
diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java
|
|
index 8296a5a5935a77b01f4d11b102f3159d97fc8a30..431f296bf651942cd390b7f383295eae3f4d2bce 100644
|
|
--- a/net/minecraft/world/entity/animal/camel/Camel.java
|
|
+++ b/net/minecraft/world/entity/animal/camel/Camel.java
|
|
@@ -355,6 +355,23 @@ public class Camel extends AbstractHorse {
|
|
return this.dashCooldown;
|
|
}
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public float generateMaxHealth(net.minecraft.util.RandomSource random) {
|
|
+ return (float) generateMaxHealth(this.level().purpurConfig.camelMaxHealthMin, this.level().purpurConfig.camelMaxHealthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateJumpStrength(net.minecraft.util.RandomSource random) {
|
|
+ return generateJumpStrength(this.level().purpurConfig.camelJumpStrengthMin, this.level().purpurConfig.camelJumpStrengthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateSpeed(net.minecraft.util.RandomSource random) {
|
|
+ return generateSpeed(this.level().purpurConfig.camelMovementSpeedMin, this.level().purpurConfig.camelMovementSpeedMax);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public SoundEvent getAmbientSound() {
|
|
return SoundEvents.CAMEL_AMBIENT;
|
|
diff --git a/net/minecraft/world/entity/animal/chicken/Chicken.java b/net/minecraft/world/entity/animal/chicken/Chicken.java
|
|
index 4a3d3ab6c9f52fd06107131f2564b196e7b42957..f5d2a74c81d9ba8aeaf6c3f50069f529dde68e72 100644
|
|
--- a/net/minecraft/world/entity/animal/chicken/Chicken.java
|
|
+++ b/net/minecraft/world/entity/animal/chicken/Chicken.java
|
|
@@ -98,6 +98,14 @@ public class Chicken extends Animal {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.chickenMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.chickenScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new FloatGoal(this));
|
|
diff --git a/net/minecraft/world/entity/animal/cow/Cow.java b/net/minecraft/world/entity/animal/cow/Cow.java
|
|
index 4d408217239cf11ff7c8925ca48c278fc8cfdfce..65c41435e06120c875a82ba8d5427e082bbeb9eb 100644
|
|
--- a/net/minecraft/world/entity/animal/cow/Cow.java
|
|
+++ b/net/minecraft/world/entity/animal/cow/Cow.java
|
|
@@ -59,6 +59,14 @@ public class Cow extends AbstractCow {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.cowScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
|
super.defineSynchedData(entityData);
|
|
diff --git a/net/minecraft/world/entity/animal/cow/MushroomCow.java b/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
|
index 1e4747e800e1b987862fcb1b7c9dfff9fec0f9a2..0c1baeb2fe56099a68043b8366507f29e41792f5 100644
|
|
--- a/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
|
+++ b/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
|
@@ -86,6 +86,13 @@ public class MushroomCow extends AbstractCow implements Shearable {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.mooshroomMaxHealth);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
|
|
return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos);
|
|
diff --git a/net/minecraft/world/entity/animal/dolphin/Dolphin.java b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
|
index 00ec3c3764ec9a16fe67a584fcbf2d80fc59f3e1..b6d698fbdf1fe5b6b1ffe8d622c83004f1fa693a 100644
|
|
--- a/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
|
+++ b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
|
@@ -161,6 +161,14 @@ public class Dolphin extends AgeableWaterCreature {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.dolphinMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.dolphinScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public @Nullable SpawnGroupData finalizeSpawn(
|
|
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, final @Nullable SpawnGroupData groupData
|
|
diff --git a/net/minecraft/world/entity/animal/equine/AbstractHorse.java b/net/minecraft/world/entity/animal/equine/AbstractHorse.java
|
|
index 3e3786a2803eacd3cdbcdc0039a7957256bf5fe9..83a8be82c5d2ad75376403a346c2ed06f691d975 100644
|
|
--- a/net/minecraft/world/entity/animal/equine/AbstractHorse.java
|
|
+++ b/net/minecraft/world/entity/animal/equine/AbstractHorse.java
|
|
@@ -140,6 +140,46 @@ public abstract class AbstractHorse extends Animal implements PlayerRideableJump
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.generateMaxHealth(random));
|
|
+ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.generateSpeed(random));
|
|
+ this.getAttribute(Attributes.JUMP_STRENGTH).setBaseValue(this.generateJumpStrength(random));
|
|
+ }
|
|
+
|
|
+ protected double generateMaxHealth(double min, double max) {
|
|
+ if (min == max) return min;
|
|
+ int diff = Mth.floor(max - min);
|
|
+ double base = max - diff;
|
|
+ int first = Mth.floor((double) diff / 2);
|
|
+ int rest = diff - first;
|
|
+ return base + random.nextInt(first + 1) + random.nextInt(rest + 1);
|
|
+ }
|
|
+
|
|
+ protected double generateJumpStrength(double min, double max) {
|
|
+ if (min == max) return min;
|
|
+ return min + (max - min) * this.random.nextDouble();
|
|
+ }
|
|
+
|
|
+ protected double generateSpeed(double min, double max) {
|
|
+ if (min == max) return min;
|
|
+ return min + (max - min) * this.random.nextDouble();
|
|
+ }
|
|
+
|
|
+ protected float generateMaxHealth(RandomSource random) {
|
|
+ return 15.0F + (float) random.nextInt(8) + (float) random.nextInt(9);
|
|
+ }
|
|
+
|
|
+ protected double generateJumpStrength(RandomSource random) {
|
|
+ return 0.4F + random.nextDouble() * 0.2 + random.nextDouble() * 0.2 + random.nextDouble() * 0.2;
|
|
+ }
|
|
+
|
|
+ protected double generateSpeed(RandomSource random) {
|
|
+ return (0.45F + random.nextDouble() * 0.3 + random.nextDouble() * 0.3 + random.nextDouble() * 0.3) * 0.25;
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur - Ridables
|
|
@@ -1058,7 +1098,7 @@ public abstract class AbstractHorse extends Animal implements PlayerRideableJump
|
|
groupData = new AgeableMob.AgeableMobGroupData(0.2F);
|
|
}
|
|
|
|
- this.randomizeAttributes(level.getRandom());
|
|
+ //this.randomizeAttributes(level.getRandom()); // Purpur - replaced by initAttributes()
|
|
return super.finalizeSpawn(level, difficulty, spawnReason, groupData);
|
|
}
|
|
|
|
diff --git a/net/minecraft/world/entity/animal/equine/Donkey.java b/net/minecraft/world/entity/animal/equine/Donkey.java
|
|
index 31cd10ab4c499c6b5ccb4be67782340c44b9758c..0a91e245c992c26ac715bcaedd369e96ac6e70cd 100644
|
|
--- a/net/minecraft/world/entity/animal/equine/Donkey.java
|
|
+++ b/net/minecraft/world/entity/animal/equine/Donkey.java
|
|
@@ -24,6 +24,23 @@ public class Donkey extends AbstractChestedHorse {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public float generateMaxHealth(net.minecraft.util.RandomSource random) {
|
|
+ return (float) generateMaxHealth(this.level().purpurConfig.donkeyMaxHealthMin, this.level().purpurConfig.donkeyMaxHealthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateJumpStrength(net.minecraft.util.RandomSource random) {
|
|
+ return generateJumpStrength(this.level().purpurConfig.donkeyJumpStrengthMin, this.level().purpurConfig.donkeyJumpStrengthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateSpeed(net.minecraft.util.RandomSource random) {
|
|
+ return generateSpeed(this.level().purpurConfig.donkeyMovementSpeedMin, this.level().purpurConfig.donkeyMovementSpeedMax);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public SoundEvent getAmbientSound() {
|
|
return SoundEvents.DONKEY_AMBIENT;
|
|
diff --git a/net/minecraft/world/entity/animal/equine/Horse.java b/net/minecraft/world/entity/animal/equine/Horse.java
|
|
index 663c6aea26a6a619f1d7af7af022abae20c930f9..2a89a4a3123a9645e3c532e51f9811af29867f76 100644
|
|
--- a/net/minecraft/world/entity/animal/equine/Horse.java
|
|
+++ b/net/minecraft/world/entity/animal/equine/Horse.java
|
|
@@ -56,6 +56,23 @@ public class Horse extends AbstractHorse {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public float generateMaxHealth(RandomSource random) {
|
|
+ return (float) generateMaxHealth(this.level().purpurConfig.horseMaxHealthMin, this.level().purpurConfig.horseMaxHealthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateJumpStrength(RandomSource random) {
|
|
+ return generateJumpStrength(this.level().purpurConfig.horseJumpStrengthMin, this.level().purpurConfig.horseJumpStrengthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateSpeed(RandomSource random) {
|
|
+ return generateSpeed(this.level().purpurConfig.horseMovementSpeedMin, this.level().purpurConfig.horseMovementSpeedMax);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void randomizeAttributes(final RandomSource random) {
|
|
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
|
|
diff --git a/net/minecraft/world/entity/animal/equine/Llama.java b/net/minecraft/world/entity/animal/equine/Llama.java
|
|
index ccb2486027263bb45f250c19a4b870c3494af1b9..4b607b42f7258da62968cdd3081b207da02cf5e3 100644
|
|
--- a/net/minecraft/world/entity/animal/equine/Llama.java
|
|
+++ b/net/minecraft/world/entity/animal/equine/Llama.java
|
|
@@ -135,6 +135,23 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public float generateMaxHealth(RandomSource random) {
|
|
+ return (float) generateMaxHealth(this.level().purpurConfig.llamaMaxHealthMin, this.level().purpurConfig.llamaMaxHealthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateJumpStrength(RandomSource random) {
|
|
+ return generateJumpStrength(this.level().purpurConfig.llamaJumpStrengthMin, this.level().purpurConfig.llamaJumpStrengthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateSpeed(RandomSource random) {
|
|
+ return generateSpeed(this.level().purpurConfig.llamaMovementSpeedMin, this.level().purpurConfig.llamaMovementSpeedMax);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public boolean isTraderLlama() {
|
|
return false;
|
|
}
|
|
diff --git a/net/minecraft/world/entity/animal/equine/Mule.java b/net/minecraft/world/entity/animal/equine/Mule.java
|
|
index 4a82af3b1f5d22fc5d4060f56cdab0ec51ef83e3..226acd03320c235db4051e5274364e7579e584aa 100644
|
|
--- a/net/minecraft/world/entity/animal/equine/Mule.java
|
|
+++ b/net/minecraft/world/entity/animal/equine/Mule.java
|
|
@@ -23,6 +23,23 @@ public class Mule extends AbstractChestedHorse {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public float generateMaxHealth(net.minecraft.util.RandomSource random) {
|
|
+ return (float) generateMaxHealth(this.level().purpurConfig.muleMaxHealthMin, this.level().purpurConfig.muleMaxHealthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateJumpStrength(net.minecraft.util.RandomSource random) {
|
|
+ return generateJumpStrength(this.level().purpurConfig.muleJumpStrengthMin, this.level().purpurConfig.muleJumpStrengthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateSpeed(net.minecraft.util.RandomSource random) {
|
|
+ return generateSpeed(this.level().purpurConfig.muleMovementSpeedMin, this.level().purpurConfig.muleMovementSpeedMax);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public SoundEvent getAmbientSound() {
|
|
return SoundEvents.MULE_AMBIENT;
|
|
diff --git a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
|
index 53ddd31255fab4f5f8472dd48407012ea7363264..d8a774d65e29e19bb982bc40ff8249882e9ce96d 100644
|
|
--- a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
|
+++ b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
|
@@ -51,6 +51,23 @@ public class SkeletonHorse extends AbstractHorse {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public float generateMaxHealth(RandomSource random) {
|
|
+ return (float) generateMaxHealth(this.level().purpurConfig.skeletonHorseMaxHealthMin, this.level().purpurConfig.skeletonHorseMaxHealthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateJumpStrength(RandomSource random) {
|
|
+ return generateJumpStrength(this.level().purpurConfig.skeletonHorseJumpStrengthMin, this.level().purpurConfig.skeletonHorseJumpStrengthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateSpeed(RandomSource random) {
|
|
+ return generateSpeed(this.level().purpurConfig.skeletonHorseMovementSpeedMin, this.level().purpurConfig.skeletonHorseMovementSpeedMax);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static AttributeSupplier.Builder createAttributes() {
|
|
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F);
|
|
}
|
|
diff --git a/net/minecraft/world/entity/animal/equine/TraderLlama.java b/net/minecraft/world/entity/animal/equine/TraderLlama.java
|
|
index ca89823a7951dba970c6bd82a7610eb7ed119a8b..4b92a5345d6ac96551aba8ecdd75aa0e4003dbee 100644
|
|
--- a/net/minecraft/world/entity/animal/equine/TraderLlama.java
|
|
+++ b/net/minecraft/world/entity/animal/equine/TraderLlama.java
|
|
@@ -54,6 +54,23 @@ public class TraderLlama extends Llama {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public float generateMaxHealth(net.minecraft.util.RandomSource random) {
|
|
+ return (float) generateMaxHealth(this.level().purpurConfig.traderLlamaMaxHealthMin, this.level().purpurConfig.traderLlamaMaxHealthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateJumpStrength(net.minecraft.util.RandomSource random) {
|
|
+ return generateJumpStrength(this.level().purpurConfig.traderLlamaJumpStrengthMin, this.level().purpurConfig.traderLlamaJumpStrengthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateSpeed(net.minecraft.util.RandomSource random) {
|
|
+ return generateSpeed(this.level().purpurConfig.traderLlamaMovementSpeedMin, this.level().purpurConfig.traderLlamaMovementSpeedMax);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public boolean isTraderLlama() {
|
|
return true;
|
|
diff --git a/net/minecraft/world/entity/animal/equine/ZombieHorse.java b/net/minecraft/world/entity/animal/equine/ZombieHorse.java
|
|
index fdc590ca470ffbbac481eb684c105218fb3603e2..061b6483beaffe62a901b3ab4665288eaf09950f 100644
|
|
--- a/net/minecraft/world/entity/animal/equine/ZombieHorse.java
|
|
+++ b/net/minecraft/world/entity/animal/equine/ZombieHorse.java
|
|
@@ -62,6 +62,23 @@ public class ZombieHorse extends AbstractHorse {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public float generateMaxHealth(RandomSource random) {
|
|
+ return (float) generateMaxHealth(this.level().purpurConfig.zombieHorseMaxHealthMin, this.level().purpurConfig.zombieHorseMaxHealthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateJumpStrength(RandomSource random) {
|
|
+ return generateJumpStrength(this.level().purpurConfig.zombieHorseJumpStrengthMin, this.level().purpurConfig.zombieHorseJumpStrengthMax);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public double generateSpeed(RandomSource random) {
|
|
+ return generateSpeed(this.level().purpurConfig.zombieHorseMovementSpeedMin, this.level().purpurConfig.zombieHorseMovementSpeedMax);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static AttributeSupplier.Builder createAttributes() {
|
|
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 25.0);
|
|
}
|
|
diff --git a/net/minecraft/world/entity/animal/feline/Cat.java b/net/minecraft/world/entity/animal/feline/Cat.java
|
|
index 5f6cb6f3d0bf8b5df66e16155df91982a5d2eb47..026157f6f533e0034ad569593929532fc69729c3 100644
|
|
--- a/net/minecraft/world/entity/animal/feline/Cat.java
|
|
+++ b/net/minecraft/world/entity/animal/feline/Cat.java
|
|
@@ -127,6 +127,14 @@ public class Cat extends TamableAnimal {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.catMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.catScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.temptGoal = new Cat.CatTemptGoal(this, 0.6, i -> i.is(ItemTags.CAT_FOOD), true);
|
|
diff --git a/net/minecraft/world/entity/animal/feline/Ocelot.java b/net/minecraft/world/entity/animal/feline/Ocelot.java
|
|
index 086ca07d2a6cba84226367d2410a4e04e1f7a4e8..a225a5bc7209cdaf328b252fd712cde2605fb039 100644
|
|
--- a/net/minecraft/world/entity/animal/feline/Ocelot.java
|
|
+++ b/net/minecraft/world/entity/animal/feline/Ocelot.java
|
|
@@ -90,6 +90,14 @@ public class Ocelot extends Animal {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.ocelotMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.ocelotScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public boolean isTrusting() {
|
|
return this.entityData.get(DATA_TRUSTING);
|
|
}
|
|
diff --git a/net/minecraft/world/entity/animal/fish/Cod.java b/net/minecraft/world/entity/animal/fish/Cod.java
|
|
index becb5c214adacd36372bbe2b21ab15e341640f7d..948d6a8e3465fd5985e91ca7eaa5f02258ad9625 100644
|
|
--- a/net/minecraft/world/entity/animal/fish/Cod.java
|
|
+++ b/net/minecraft/world/entity/animal/fish/Cod.java
|
|
@@ -25,6 +25,13 @@ public class Cod extends AbstractSchoolingFish {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.codMaxHealth);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public ItemStack getBucketItemStack() {
|
|
return new ItemStack(Items.COD_BUCKET);
|
|
diff --git a/net/minecraft/world/entity/animal/fish/Pufferfish.java b/net/minecraft/world/entity/animal/fish/Pufferfish.java
|
|
index baca62c789359f02b3ef22cbf8f72ba6008fb51c..3d68c742dfa6b805f22c647af8b2c4f5ccc5cccf 100644
|
|
--- a/net/minecraft/world/entity/animal/fish/Pufferfish.java
|
|
+++ b/net/minecraft/world/entity/animal/fish/Pufferfish.java
|
|
@@ -59,6 +59,13 @@ public class Pufferfish extends AbstractFish {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.pufferfishMaxHealth);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
|
super.defineSynchedData(entityData);
|
|
diff --git a/net/minecraft/world/entity/animal/fish/Salmon.java b/net/minecraft/world/entity/animal/fish/Salmon.java
|
|
index 0b89e3b80ec06345377133c2f954cc65db7e3b9c..ecc4e79d43f2fce16c4ee78ea8fb8efba4d0c9e6 100644
|
|
--- a/net/minecraft/world/entity/animal/fish/Salmon.java
|
|
+++ b/net/minecraft/world/entity/animal/fish/Salmon.java
|
|
@@ -53,6 +53,13 @@ public class Salmon extends AbstractSchoolingFish {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.salmonMaxHealth);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public int getMaxSchoolSize() {
|
|
return 5;
|
|
diff --git a/net/minecraft/world/entity/animal/fish/TropicalFish.java b/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
|
index d48f8dc3e806ffe767565158bcfa17631839a61c..e9692aacca5f32c4280b16b4eabecf87c2ed5aeb 100644
|
|
--- a/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
|
+++ b/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
|
@@ -89,6 +89,13 @@ public class TropicalFish extends AbstractSchoolingFish {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.tropicalFishMaxHealth);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static String getPredefinedName(final int index) {
|
|
return "entity.minecraft.tropical_fish.predefined." + index;
|
|
}
|
|
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
|
|
index aecbd2bddf4eeb365ccad8a85799f7fcd8b9f319..cf9fc2afb3b2fac97930289411f0a22fdb8ea61d 100644
|
|
--- a/net/minecraft/world/entity/animal/fox/Fox.java
|
|
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
|
|
@@ -199,6 +199,14 @@ public class Fox extends Animal {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.foxMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.foxScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
|
super.defineSynchedData(entityData);
|
|
diff --git a/net/minecraft/world/entity/animal/golem/CopperGolem.java b/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
|
index c27319adafa8089f098efde14989425a4715b260..5337c65d317299df2ac0dfd9b7ea12fc7debcdb6 100644
|
|
--- a/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
|
+++ b/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
|
@@ -134,6 +134,16 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.copperGolemMaxHealth);
|
|
+ this.getAttribute(Attributes.STEP_HEIGHT).setBaseValue(this.level().purpurConfig.copperGolemStepHeight);
|
|
+ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.level().purpurConfig.copperGolemMovementSpeed);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.copperGolemScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static AttributeSupplier.Builder createAttributes() {
|
|
return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0);
|
|
}
|
|
diff --git a/net/minecraft/world/entity/animal/golem/IronGolem.java b/net/minecraft/world/entity/animal/golem/IronGolem.java
|
|
index 8c674f2f3a068e92b3975df8137912f4b8327cf2..9fd7366157c7e6d3d75469c33599560c5045abf7 100644
|
|
--- a/net/minecraft/world/entity/animal/golem/IronGolem.java
|
|
+++ b/net/minecraft/world/entity/animal/golem/IronGolem.java
|
|
@@ -92,6 +92,14 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.ironGolemMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.ironGolemScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options
|
|
diff --git a/net/minecraft/world/entity/animal/golem/SnowGolem.java b/net/minecraft/world/entity/animal/golem/SnowGolem.java
|
|
index acb61a212f9240ccfa414770868c0fb3835c538a..3fe90a55e0b681c3c689db081abe28e6931e711f 100644
|
|
--- a/net/minecraft/world/entity/animal/golem/SnowGolem.java
|
|
+++ b/net/minecraft/world/entity/animal/golem/SnowGolem.java
|
|
@@ -79,6 +79,14 @@ public class SnowGolem extends AbstractGolem implements RangedAttackMob, Shearab
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.snowGolemMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.snowGolemScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
|
diff --git a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
|
index 60c67b49d236fe1ad152b668083b61407f31ea6e..2a0e5edf26e1b53ed9f6e341a89670fe3cd4dbd3 100644
|
|
--- a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
|
+++ b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
|
@@ -144,6 +144,19 @@ public class HappyGhast extends Animal {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.happyGhastMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.happyGhastScale);
|
|
+ this.getAttribute(Attributes.TEMPT_RANGE).setBaseValue(this.level().purpurConfig.happyGhastTemptRange);
|
|
+ this.getAttribute(Attributes.FLYING_SPEED).setBaseValue(this.level().purpurConfig.happyGhastFlyingSpeed);
|
|
+ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.level().purpurConfig.happyGhastMovementSpeed);
|
|
+ this.getAttribute(Attributes.FOLLOW_RANGE).setBaseValue(this.level().purpurConfig.happyGhastFollowRange);
|
|
+ this.getAttribute(Attributes.CAMERA_DISTANCE).setBaseValue(this.level().purpurConfig.happyGhastCameraDistance);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void ageBoundaryReached() {
|
|
if (this.isBaby()) {
|
|
@@ -167,7 +180,7 @@ public class HappyGhast extends Animal {
|
|
|
|
@Override
|
|
protected float sanitizeScale(final float scale) {
|
|
- return Math.min(scale, 1.0F);
|
|
+ return Math.min(scale, 1.0F); // Purpur - Configurable entity base attributes
|
|
}
|
|
|
|
@Override
|
|
diff --git a/net/minecraft/world/entity/animal/nautilus/Nautilus.java b/net/minecraft/world/entity/animal/nautilus/Nautilus.java
|
|
index d6ba5f201314148a382ce71e2c570f336c5d7d40..49f3dc14c85a8ed391afdc7355e8c6ac34ab9ae5 100644
|
|
--- a/net/minecraft/world/entity/animal/nautilus/Nautilus.java
|
|
+++ b/net/minecraft/world/entity/animal/nautilus/Nautilus.java
|
|
@@ -37,6 +37,17 @@ public class Nautilus extends AbstractNautilus {
|
|
super(type, level);
|
|
}
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.nautilusMaxHealth);
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MOVEMENT_SPEED).setBaseValue(this.level().purpurConfig.nautilusMovementSpeed);
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.nautilusAttackDamage);
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.KNOCKBACK_RESISTANCE).setBaseValue(this.level().purpurConfig.nautilusKnockbackResistance);
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SCALE).setBaseValue(this.level().purpurConfig.nautilusScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected Brain<Nautilus> makeBrain(final Brain.Packed packedBrain) {
|
|
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
|
|
diff --git a/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java b/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
|
|
index c9aa882ab43ced1d3d9b84e19feae39d6ed28b78..1ceeaad8411f06de37a0ea5aff8fc48d9211eed2 100644
|
|
--- a/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
|
|
+++ b/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
|
|
@@ -48,6 +48,17 @@ public class ZombieNautilus extends AbstractNautilus {
|
|
super(type, level);
|
|
}
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombieNautilusMaxHealth);
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MOVEMENT_SPEED).setBaseValue(this.level().purpurConfig.zombieNautilusMovementSpeed);
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.zombieNautilusAttackDamage);
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.KNOCKBACK_RESISTANCE).setBaseValue(this.level().purpurConfig.zombieNautilusKnockbackResistance);
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SCALE).setBaseValue(this.level().purpurConfig.zombieNautilusScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static AttributeSupplier.Builder createAttributes() {
|
|
return AbstractNautilus.createAttributes().add(Attributes.MOVEMENT_SPEED, 1.1F);
|
|
}
|
|
diff --git a/net/minecraft/world/entity/animal/panda/Panda.java b/net/minecraft/world/entity/animal/panda/Panda.java
|
|
index f0b23d5f443a8f29ce98e16f0254425147599d8d..bd8936c6ef9d2285858b784873e85d52812b3f14 100644
|
|
--- a/net/minecraft/world/entity/animal/panda/Panda.java
|
|
+++ b/net/minecraft/world/entity/animal/panda/Panda.java
|
|
@@ -138,6 +138,15 @@ public class Panda extends Animal {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.pandaMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.pandaScale);
|
|
+ setAttributes();
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected boolean canDispenserEquipIntoSlot(final EquipmentSlot slot) {
|
|
return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot();
|
|
@@ -625,7 +634,11 @@ public class Panda extends Animal {
|
|
|
|
public void setAttributes() {
|
|
if (this.isWeak()) {
|
|
- this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(10.0);
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ net.minecraft.world.entity.ai.attributes.AttributeInstance maxHealth = this.getAttribute(Attributes.MAX_HEALTH);
|
|
+ maxHealth.setBaseValue(maxHealth.getValue() / 2);
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
}
|
|
|
|
if (this.isLazy()) {
|
|
diff --git a/net/minecraft/world/entity/animal/parrot/Parrot.java b/net/minecraft/world/entity/animal/parrot/Parrot.java
|
|
index ace47c04cb0bdb8b44fa80bfad7b01e670839f91..441919a0a99c4d87c13611999e1e24e9cfb6e0e9 100644
|
|
--- a/net/minecraft/world/entity/animal/parrot/Parrot.java
|
|
+++ b/net/minecraft/world/entity/animal/parrot/Parrot.java
|
|
@@ -199,6 +199,14 @@ public class Parrot extends ShoulderRidingEntity {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.parrotMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.parrotScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public @Nullable SpawnGroupData finalizeSpawn(
|
|
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, @Nullable SpawnGroupData groupData
|
|
diff --git a/net/minecraft/world/entity/animal/pig/Pig.java b/net/minecraft/world/entity/animal/pig/Pig.java
|
|
index b3a24a2e48c0ada66cde1ee7710c2d89d4f221d9..376e60ef2125e00432aad380ea7a6087abc76a0c 100644
|
|
--- a/net/minecraft/world/entity/animal/pig/Pig.java
|
|
+++ b/net/minecraft/world/entity/animal/pig/Pig.java
|
|
@@ -93,6 +93,14 @@ public class Pig extends Animal implements ItemSteerable {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.pigMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.pigScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new FloatGoal(this));
|
|
diff --git a/net/minecraft/world/entity/animal/polarbear/PolarBear.java b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
|
index 250401cef7c93375235ef275165f1e0d9684d42a..85c6b17bbf490315b76612c4a8ab50b03e9d14a3 100644
|
|
--- a/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
|
+++ b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
|
@@ -124,6 +124,14 @@ public class PolarBear extends Animal implements NeutralMob {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.polarBearMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.polarBearScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public @Nullable AgeableMob getBreedOffspring(final ServerLevel level, final AgeableMob partner) {
|
|
return EntityTypes.POLAR_BEAR.create(level, EntitySpawnReason.BREEDING);
|
|
diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
|
index 2d2078ca3adeb78b6ec2633c35d3c622184cc3b2..38fa1c0b79e3dc11e830af95be4bed1e74910108 100644
|
|
--- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
|
+++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
|
@@ -163,6 +163,14 @@ public class Rabbit extends Animal {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.rabbitMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.rabbitScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public void registerGoals() {
|
|
this.goalSelector.addGoal(1, new FloatGoal(this));
|
|
diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java
|
|
index ef69bac6181d5f130008629ddb2763f56232345b..6ba9cd9090ef264660361e28198886f96c95dfba 100644
|
|
--- a/net/minecraft/world/entity/animal/sheep/Sheep.java
|
|
+++ b/net/minecraft/world/entity/animal/sheep/Sheep.java
|
|
@@ -88,6 +88,14 @@ public class Sheep extends Animal implements Shearable {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.sheepMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.sheepScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.eatBlockGoal = new EatBlockGoal(this);
|
|
diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
|
index 1e844ec746aa200ed8e70af5dd4389f3bd671112..9246c76131c02832d96eeb6d3899e0050abce938 100644
|
|
--- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
|
+++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
|
@@ -112,6 +112,14 @@ public class Sniffer extends Animal {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.snifferMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.snifferScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
|
super.defineSynchedData(entityData);
|
|
diff --git a/net/minecraft/world/entity/animal/squid/GlowSquid.java b/net/minecraft/world/entity/animal/squid/GlowSquid.java
|
|
index bde43e42ba7eec863fd0e2cd9b8068e8cefaaa1c..86b8f30bc9c98423e2e5bbb2a7548ea36c0854b6 100644
|
|
--- a/net/minecraft/world/entity/animal/squid/GlowSquid.java
|
|
+++ b/net/minecraft/world/entity/animal/squid/GlowSquid.java
|
|
@@ -51,6 +51,13 @@ public class GlowSquid extends Squid {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.glowSquidMaxHealth);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected ParticleOptions getInkParticle() {
|
|
return ParticleTypes.GLOW_SQUID_INK;
|
|
diff --git a/net/minecraft/world/entity/animal/squid/Squid.java b/net/minecraft/world/entity/animal/squid/Squid.java
|
|
index e2273ce904e2c95491caec67d36d37b4b5e0fe67..66477755d3ee8293a8bd79baa01214954b792898 100644
|
|
--- a/net/minecraft/world/entity/animal/squid/Squid.java
|
|
+++ b/net/minecraft/world/entity/animal/squid/Squid.java
|
|
@@ -96,6 +96,14 @@ public class Squid extends AgeableWaterCreature {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.squidMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.squidScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this));
|
|
diff --git a/net/minecraft/world/entity/animal/turtle/Turtle.java b/net/minecraft/world/entity/animal/turtle/Turtle.java
|
|
index 2e147b2276dd8604dc6adb75c7ac90ef42e63955..806da779ee6ea7ab6fe572d2ca6cf35c03d302b3 100644
|
|
--- a/net/minecraft/world/entity/animal/turtle/Turtle.java
|
|
+++ b/net/minecraft/world/entity/animal/turtle/Turtle.java
|
|
@@ -105,6 +105,14 @@ public class Turtle extends Animal {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.turtleMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.turtleScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public void setHomePos(final BlockPos pos) {
|
|
this.homePos = pos;
|
|
}
|
|
diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
|
index f54a14a1e434cbfedf709d3b1495f2ae9ae4f11f..acf623ba0ab1f1d6c98af1a83cddd634443aee58 100644
|
|
--- a/net/minecraft/world/entity/animal/wolf/Wolf.java
|
|
+++ b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
|
@@ -212,6 +212,14 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wolfMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.wolfScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(1, new FloatGoal(this));
|
|
diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
|
index c0ffda7c18461494aee68aac2d99a660e3b21dcf..ffd612896a30ebff55906baba94150eb25fd8e98 100644
|
|
--- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
|
+++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
|
@@ -165,6 +165,13 @@ public class EnderDragon extends Mob implements Enemy {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.enderDragonMaxHealth);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static AttributeSupplier.Builder createAttributes() {
|
|
return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0);
|
|
}
|
|
@@ -1068,7 +1075,7 @@ public class EnderDragon extends Mob implements Enemy {
|
|
|
|
@Override
|
|
protected float sanitizeScale(final float scale) {
|
|
- return 1.0F;
|
|
+ return 1.0F; // Purpur - Configurable entity base attributes
|
|
}
|
|
|
|
// CraftBukkit start - SPIGOT-2420: Special case, the ender dragon drops 12000 xp for the first kill and 500 xp for every other kill and this over time.
|
|
diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
|
index 1f32d0d87727009a8ca671415159566c10f79f7e..7a80afbe7d1c5ff2ea0e26eb1c59123705dc1aef 100644
|
|
--- a/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
|
+++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
|
@@ -213,6 +213,14 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.witherMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.witherScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected PathNavigation createNavigation(final Level level) {
|
|
FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level);
|
|
@@ -435,7 +443,7 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
|
|
|
this.setInvulnerableTicks(newCount);
|
|
if (this.tickCount % 10 == 0) {
|
|
- this.heal(10.0F, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.WITHER_SPAWN); // CraftBukkit
|
|
+ this.heal(this.getMaxHealth() / 30, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.WITHER_SPAWN); // CraftBukkit // Purpur - Configurable entity base attributes
|
|
}
|
|
} else {
|
|
super.customServerAiStep(level);
|
|
diff --git a/net/minecraft/world/entity/monster/Blaze.java b/net/minecraft/world/entity/monster/Blaze.java
|
|
index c1acc0a648493ec33ef4fc4a48b52fe0b3dc04b2..b553c6dd60bd23fba7ee3df9886561fc7640f104 100644
|
|
--- a/net/minecraft/world/entity/monster/Blaze.java
|
|
+++ b/net/minecraft/world/entity/monster/Blaze.java
|
|
@@ -76,6 +76,14 @@ public class Blaze extends Monster {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.blazeMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.blazeScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
|
diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java
|
|
index e5f7d276c083cdb78d2f420c03be1b08115d5597..01c722932aaed2221badaa6231d8a20d005b087b 100644
|
|
--- a/net/minecraft/world/entity/monster/Creeper.java
|
|
+++ b/net/minecraft/world/entity/monster/Creeper.java
|
|
@@ -137,6 +137,14 @@ public class Creeper extends Monster {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.creeperMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.creeperScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(1, new FloatGoal(this));
|
|
diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java
|
|
index f27035be70e05dddb17944f0b461de8b506490d6..a14807226ac6b6786cd1470130819d2d735db16b 100644
|
|
--- a/net/minecraft/world/entity/monster/ElderGuardian.java
|
|
+++ b/net/minecraft/world/entity/monster/ElderGuardian.java
|
|
@@ -44,6 +44,14 @@ public class ElderGuardian extends Guardian {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.elderGuardianMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.elderGuardianScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static AttributeSupplier.Builder createAttributes() {
|
|
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0);
|
|
}
|
|
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
|
|
index 8b958dbdec8e68690525d345bd2f1038b1466ef9..e9b28ab9af835e8394855f08edb3cc463022d6f9 100644
|
|
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
|
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
|
@@ -106,6 +106,14 @@ public class EnderMan extends Monster implements NeutralMob {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.endermanMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.endermanScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new FloatGoal(this));
|
|
diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java
|
|
index 8405358d2221d76bc0949047fcc6f17fdfc99dfc..c10982945974171e478690d2db5080551cb29cdb 100644
|
|
--- a/net/minecraft/world/entity/monster/Endermite.java
|
|
+++ b/net/minecraft/world/entity/monster/Endermite.java
|
|
@@ -64,6 +64,14 @@ public class Endermite extends Monster {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.endermiteMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.endermiteScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(1, new FloatGoal(this));
|
|
diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java
|
|
index 7e843a144900d8d5c95848ce32904432502a18e6..f6cd12c6a36c95dcb338c5aec791707bb971d615 100644
|
|
--- a/net/minecraft/world/entity/monster/Ghast.java
|
|
+++ b/net/minecraft/world/entity/monster/Ghast.java
|
|
@@ -75,6 +75,14 @@ public class Ghast extends Mob implements Enemy {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.ghastMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.ghastScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
|
diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java
|
|
index 1b7a75a2be45928093382fa2f2da079ffc5d190d..7b6952f13e18548d0e71035d6cd6cfb24c03e6ee 100644
|
|
--- a/net/minecraft/world/entity/monster/Giant.java
|
|
+++ b/net/minecraft/world/entity/monster/Giant.java
|
|
@@ -35,6 +35,16 @@ public class Giant extends Monster {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ protected void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.giantMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.giantScale);
|
|
+ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.level().purpurConfig.giantMovementSpeed);
|
|
+ this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.giantAttackDamage);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static AttributeSupplier.Builder createAttributes() {
|
|
return Monster.createMonsterAttributes()
|
|
.add(Attributes.MAX_HEALTH, 100.0)
|
|
diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java
|
|
index af865e3a6549f008826ed7469b2ecb4c92598863..a803e9b43758b7bad9bb1f9b577a2c9c7bc040d2 100644
|
|
--- a/net/minecraft/world/entity/monster/Guardian.java
|
|
+++ b/net/minecraft/world/entity/monster/Guardian.java
|
|
@@ -89,6 +89,14 @@ public class Guardian extends Monster {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.guardianMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.guardianScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
MoveTowardsRestrictionGoal goal = new MoveTowardsRestrictionGoal(this, 1.0);
|
|
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
|
|
index 6ad191adcbb9af4610fc86902cacf20977f31d6a..b42f67dff1ae0fd9b549f584e789285a15cb690c 100644
|
|
--- a/net/minecraft/world/entity/monster/Phantom.java
|
|
+++ b/net/minecraft/world/entity/monster/Phantom.java
|
|
@@ -140,7 +140,10 @@ public class Phantom extends Mob implements Enemy {
|
|
private void updatePhantomSizeInfo() {
|
|
this.refreshDimensions();
|
|
if (level().purpurConfig.phantomFlamesOnSwoop && attackPhase == AttackPhase.SWOOP) shoot(); // Purpur - Ridables - Phantom flames on swoop
|
|
- this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(6 + this.getPhantomSize());
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(getFromCache(() -> this.level().purpurConfig.phantomMaxHealth, () -> this.level().purpurConfig.phantomMaxHealthCache, () -> 20.0D));
|
|
+ this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(getFromCache(() -> this.level().purpurConfig.phantomAttackDamage, () -> this.level().purpurConfig.phantomAttackDamageCache, () -> (double) (6 + this.getPhantomSize())));
|
|
+ // Purpur end - Configurable entity base attributes
|
|
}
|
|
|
|
public int getPhantomSize() {
|
|
@@ -160,6 +163,23 @@ public class Phantom extends Mob implements Enemy {
|
|
return this.getId() * 3;
|
|
}
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ private double getFromCache(java.util.function.Supplier<String> equation, java.util.function.Supplier<java.util.Map<Integer, Double>> cache, java.util.function.Supplier<Double> defaultValue) {
|
|
+ int size = getPhantomSize();
|
|
+ Double value = cache.get().get(size);
|
|
+ if (value == null) {
|
|
+ try {
|
|
+ value = ((Number) scriptEngine.eval("let size = " + size + "; " + equation.get())).doubleValue();
|
|
+ } catch (javax.script.ScriptException e) {
|
|
+ e.printStackTrace();
|
|
+ value = defaultValue.get();
|
|
+ }
|
|
+ cache.get().put(size, value);
|
|
+ }
|
|
+ return value;
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public void tick() {
|
|
super.tick();
|
|
diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java
|
|
index 99490398f72e91c0d3dc9d2a3dd82fb6f49734d5..d8c97a5ec3f121ce92dedfeba4babb564714eca4 100644
|
|
--- a/net/minecraft/world/entity/monster/Ravager.java
|
|
+++ b/net/minecraft/world/entity/monster/Ravager.java
|
|
@@ -94,6 +94,14 @@ public class Ravager extends Raider {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.ravagerMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.ravagerScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
super.registerGoals();
|
|
diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java
|
|
index 8ef97a74c5c2d4caa033c93cf553ba885605d052..12b32798d890bf430a04781866de140e07f94821 100644
|
|
--- a/net/minecraft/world/entity/monster/Shulker.java
|
|
+++ b/net/minecraft/world/entity/monster/Shulker.java
|
|
@@ -126,6 +126,14 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.shulkerMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.shulkerScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
|
@@ -614,7 +622,7 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
@Override
|
|
protected float sanitizeScale(final float scale) {
|
|
- return Math.min(scale, 3.0F);
|
|
+ return Math.min(scale, MAX_SCALE); // Purpur - Configurable entity base attributes
|
|
}
|
|
|
|
private void setVariant(final Optional<DyeColor> color) {
|
|
diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java
|
|
index 6aa67e7857cf205d436b451387083af75e9ece20..a789aa75d88658236524d83fee02cf303e898809 100644
|
|
--- a/net/minecraft/world/entity/monster/Silverfish.java
|
|
+++ b/net/minecraft/world/entity/monster/Silverfish.java
|
|
@@ -55,6 +55,16 @@ public class Silverfish extends Monster {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.silverfishMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.silverfishScale);
|
|
+ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.level().purpurConfig.silverfishMovementSpeed);
|
|
+ this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.silverfishAttackDamage);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this);
|
|
diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java
|
|
index cd35797eff1ec2881e72b0fc44bd9a098d795a74..4f4f01941e66880113dd80626030a635203365b9 100644
|
|
--- a/net/minecraft/world/entity/monster/Strider.java
|
|
+++ b/net/minecraft/world/entity/monster/Strider.java
|
|
@@ -116,6 +116,14 @@ public class Strider extends Animal implements ItemSteerable {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.striderMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.striderScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static boolean checkStriderSpawnRules(
|
|
final EntityType<Strider> ignoredType,
|
|
final LevelAccessor level,
|
|
diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java
|
|
index 3ddf4ba1d809e62e4a1f7cc54f44738b1c129145..854c78d567a446479a704fbf459885f2b164e54d 100644
|
|
--- a/net/minecraft/world/entity/monster/Vex.java
|
|
+++ b/net/minecraft/world/entity/monster/Vex.java
|
|
@@ -104,6 +104,14 @@ public class Vex extends Monster implements TraceableEntity, OwnableEntity {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.vexMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.vexScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public boolean isFlapping() {
|
|
return this.tickCount % TICKS_PER_FLAP == 0;
|
|
diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java
|
|
index 0d08901296fa2c7acf0b9ad2e0ef217c4b0ab874..4b2da14b64476d4b7358c6c764a622d4b0fc6207 100644
|
|
--- a/net/minecraft/world/entity/monster/Witch.java
|
|
+++ b/net/minecraft/world/entity/monster/Witch.java
|
|
@@ -75,6 +75,14 @@ public class Witch extends Raider implements RangedAttackMob {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.witchMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.witchScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
super.registerGoals();
|
|
diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java
|
|
index 41cd8cef18309f1dcfdb5c45f6733bad10587303..f449875ed2ada648aef7f0cfff52c08e94516d73 100644
|
|
--- a/net/minecraft/world/entity/monster/Zoglin.java
|
|
+++ b/net/minecraft/world/entity/monster/Zoglin.java
|
|
@@ -101,6 +101,14 @@ public class Zoglin extends Monster implements HoglinBase {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zoglinMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.zoglinScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected Brain<Zoglin> makeBrain(final Brain.Packed packedBrain) {
|
|
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
|
|
diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java
|
|
index a63b919b08b2fba048a338fe24ae2a1b90c869bd..bb0508e1273ff0ab8db37868b78d16f0c15e854d 100644
|
|
--- a/net/minecraft/world/entity/monster/creaking/Creaking.java
|
|
+++ b/net/minecraft/world/entity/monster/creaking/Creaking.java
|
|
@@ -129,6 +129,14 @@ public class Creaking extends Monster {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.creakingMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.creakingScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected BodyRotationControl createBodyControl() {
|
|
return new Creaking.CreakingBodyRotationControl(this);
|
|
diff --git a/net/minecraft/world/entity/monster/cubemob/AbstractCubeMob.java b/net/minecraft/world/entity/monster/cubemob/AbstractCubeMob.java
|
|
index d01d020a562493ba0c429d2c647bf13fe729dbe0..9d4410c84c0ebb9d9e0a9eead27b235992ed2df8 100644
|
|
--- a/net/minecraft/world/entity/monster/cubemob/AbstractCubeMob.java
|
|
+++ b/net/minecraft/world/entity/monster/cubemob/AbstractCubeMob.java
|
|
@@ -75,6 +75,31 @@ public abstract class AbstractCubeMob extends AgeableMob {
|
|
|
|
protected abstract void addTargetingGoals();
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ protected abstract String getMaxHealthEquation();
|
|
+
|
|
+ protected abstract String getAttackDamageEquation();
|
|
+
|
|
+ protected abstract java.util.Map<Integer, Double> getMaxHealthCache();
|
|
+
|
|
+ protected abstract java.util.Map<Integer, Double> getAttackDamageCache();
|
|
+
|
|
+ protected double getFromCache(java.util.function.Supplier<String> equation, java.util.function.Supplier<java.util.Map<Integer, Double>> cache, java.util.function.Supplier<Double> defaultValue) {
|
|
+ int size = getSize();
|
|
+ Double value = cache.get().get(size);
|
|
+ if (value == null) {
|
|
+ try {
|
|
+ value = ((Number) scriptEngine.eval("let size = " + size + "; " + equation.get())).doubleValue();
|
|
+ } catch (javax.script.ScriptException e) {
|
|
+ e.printStackTrace();
|
|
+ value = defaultValue.get();
|
|
+ }
|
|
+ cache.get().put(size, value);
|
|
+ }
|
|
+ return value;
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
|
super.defineSynchedData(entityData);
|
|
diff --git a/net/minecraft/world/entity/monster/cubemob/MagmaCube.java b/net/minecraft/world/entity/monster/cubemob/MagmaCube.java
|
|
index bb36ce235aac8d2cf9e4b5dc1328991f65353d20..54cc2ab970ec854ca44476a5e58b53363c64d1e5 100644
|
|
--- a/net/minecraft/world/entity/monster/cubemob/MagmaCube.java
|
|
+++ b/net/minecraft/world/entity/monster/cubemob/MagmaCube.java
|
|
@@ -68,6 +68,28 @@ public class MagmaCube extends AbstractCubeMob implements Enemy {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ protected String getMaxHealthEquation() {
|
|
+ return level().purpurConfig.magmaCubeMaxHealth;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected String getAttackDamageEquation() {
|
|
+ return level().purpurConfig.magmaCubeAttackDamage;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected java.util.Map<Integer, Double> getMaxHealthCache() {
|
|
+ return level().purpurConfig.magmaCubeMaxHealthCache;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected java.util.Map<Integer, Double> getAttackDamageCache() {
|
|
+ return level().purpurConfig.magmaCubeAttackDamageCache;
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static AttributeSupplier.Builder createAttributes() {
|
|
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F);
|
|
}
|
|
diff --git a/net/minecraft/world/entity/monster/cubemob/Slime.java b/net/minecraft/world/entity/monster/cubemob/Slime.java
|
|
index 0ac7a442a0ea79f190aceb60b771d616b377e613..22c20e4360473cdbe9cda8bb7b3b30be85f16fe6 100644
|
|
--- a/net/minecraft/world/entity/monster/cubemob/Slime.java
|
|
+++ b/net/minecraft/world/entity/monster/cubemob/Slime.java
|
|
@@ -79,6 +79,28 @@ public class Slime extends AbstractCubeMob implements Enemy {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ protected String getMaxHealthEquation() {
|
|
+ return level().purpurConfig.slimeMaxHealth;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected String getAttackDamageEquation() {
|
|
+ return level().purpurConfig.slimeAttackDamage;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected java.util.Map<Integer, Double> getMaxHealthCache() {
|
|
+ return level().purpurConfig.slimeMaxHealthCache;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected java.util.Map<Integer, Double> getAttackDamageCache() {
|
|
+ return level().purpurConfig.slimeAttackDamageCache;
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public SoundEvent getHurtSound(final DamageSource source) {
|
|
return this.isTiny() ? SoundEvents.SLIME_HURT_SMALL : SoundEvents.SLIME_HURT;
|
|
@@ -168,4 +190,12 @@ public class Slime extends AbstractCubeMob implements Enemy {
|
|
this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(actualSize);
|
|
this.xpReward = actualSize;
|
|
}
|
|
+
|
|
+ @Override
|
|
+ protected void setcubeMobHealth(final int actualSize) {
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(getFromCache(this::getMaxHealthEquation, this::getMaxHealthCache, () -> (double) (actualSize * actualSize)));
|
|
+ this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(getFromCache(this::getAttackDamageEquation, this::getAttackDamageCache, () -> (double) actualSize));
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+ }
|
|
}
|
|
diff --git a/net/minecraft/world/entity/monster/cubemob/SulfurCube.java b/net/minecraft/world/entity/monster/cubemob/SulfurCube.java
|
|
index 7b3ab0515bae1963cdd2319f097bfffb4d12f4e5..a966d253af27d5a8cc89a2454cf60377bdf7ce62 100644
|
|
--- a/net/minecraft/world/entity/monster/cubemob/SulfurCube.java
|
|
+++ b/net/minecraft/world/entity/monster/cubemob/SulfurCube.java
|
|
@@ -151,6 +151,20 @@ public class SulfurCube extends AbstractCubeMob implements Bucketable, Shearable
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ protected String getMaxHealthEquation() {return "size";}
|
|
+
|
|
+ @Override
|
|
+ protected String getAttackDamageEquation() {return "size";}
|
|
+
|
|
+ @Override
|
|
+ protected java.util.Map<Integer, Double> getMaxHealthCache() {return new java.util.HashMap<>();}
|
|
+
|
|
+ @Override
|
|
+ protected java.util.Map<Integer, Double> getAttackDamageCache() {return new java.util.HashMap<>();}
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public boolean fromBucket() {
|
|
return this.entityData.get(FROM_BUCKET);
|
|
diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
|
|
index 0f2b6f8d17fe80cb07b0cc18d3501ae700427eda..2d8023023ae121dd6ad623766c50e0b236e6a25e 100644
|
|
--- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java
|
|
+++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
|
|
@@ -98,6 +98,14 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.hoglinMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.hoglinScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@VisibleForTesting
|
|
public void setTimeInOverworld(final int timeInOverworld) {
|
|
this.timeInOverworld = timeInOverworld;
|
|
diff --git a/net/minecraft/world/entity/monster/illager/Evoker.java b/net/minecraft/world/entity/monster/illager/Evoker.java
|
|
index ba8d47480a1927a28b13025bff6c785121dd13eb..73ebf1ac5d814399887e4e8e717ee8fb41404969 100644
|
|
--- a/net/minecraft/world/entity/monster/illager/Evoker.java
|
|
+++ b/net/minecraft/world/entity/monster/illager/Evoker.java
|
|
@@ -67,6 +67,14 @@ public class Evoker extends SpellcasterIllager {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.evokerMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.evokerScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
super.registerGoals();
|
|
diff --git a/net/minecraft/world/entity/monster/illager/Illusioner.java b/net/minecraft/world/entity/monster/illager/Illusioner.java
|
|
index 9ea4745eb0d72c25ac5b89a6bfa5ba2846740f07..0150ebdcbb681bcf8128eec34fd6e3fbfb85a79f 100644
|
|
--- a/net/minecraft/world/entity/monster/illager/Illusioner.java
|
|
+++ b/net/minecraft/world/entity/monster/illager/Illusioner.java
|
|
@@ -76,6 +76,16 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ protected void initAttributes() {
|
|
+ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.level().purpurConfig.illusionerMovementSpeed);
|
|
+ this.getAttribute(Attributes.FOLLOW_RANGE).setBaseValue(this.level().purpurConfig.illusionerFollowRange);
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.illusionerMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.illusionerScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
super.registerGoals();
|
|
diff --git a/net/minecraft/world/entity/monster/illager/Pillager.java b/net/minecraft/world/entity/monster/illager/Pillager.java
|
|
index a0e926bedb5000a8e3d8e37207916cc06ad01090..81d956085667b7564588b54b54c1150b8a082c97 100644
|
|
--- a/net/minecraft/world/entity/monster/illager/Pillager.java
|
|
+++ b/net/minecraft/world/entity/monster/illager/Pillager.java
|
|
@@ -82,6 +82,14 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.pillagerMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.pillagerScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
super.registerGoals();
|
|
diff --git a/net/minecraft/world/entity/monster/illager/Vindicator.java b/net/minecraft/world/entity/monster/illager/Vindicator.java
|
|
index 7caebb032e03ce54463c1e1050dc2bfe14cb16ee..d06f6bf930277f08756752f7f259a57f456e7c38 100644
|
|
--- a/net/minecraft/world/entity/monster/illager/Vindicator.java
|
|
+++ b/net/minecraft/world/entity/monster/illager/Vindicator.java
|
|
@@ -74,6 +74,14 @@ public class Vindicator extends AbstractIllager {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.vindicatorMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.vindicatorScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
super.registerGoals();
|
|
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
|
index f74df436798220d83f62383c523566d0acc2c87a..95751fd884c70ff6a3ff95fb2d442627a7867996 100644
|
|
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
|
|
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
|
@@ -126,6 +126,14 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.piglinMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.piglinScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void addAdditionalSaveData(final ValueOutput output) {
|
|
super.addAdditionalSaveData(output);
|
|
diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
|
|
index 3b8a2fbd8f403c72fe092f8f2a95f95c9f7f930c..3cbb6f2ee343e6d3851e84e53cb1aafa55418b0f 100644
|
|
--- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
|
|
+++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
|
|
@@ -67,6 +67,14 @@ public class PiglinBrute extends AbstractPiglin {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.piglinBruteMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.piglinBruteScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static AttributeSupplier.Builder createAttributes() {
|
|
return Monster.createMonsterAttributes()
|
|
.add(Attributes.MAX_HEALTH, 50.0)
|
|
diff --git a/net/minecraft/world/entity/monster/skeleton/Bogged.java b/net/minecraft/world/entity/monster/skeleton/Bogged.java
|
|
index faa10efb42f00c8ff0726afcb689501e9c9ae50c..617f61f4f7559a42e27d935ab9837ed99a8e9c1e 100644
|
|
--- a/net/minecraft/world/entity/monster/skeleton/Bogged.java
|
|
+++ b/net/minecraft/world/entity/monster/skeleton/Bogged.java
|
|
@@ -58,6 +58,14 @@ public class Bogged extends AbstractSkeleton implements Shearable {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.boggedMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.boggedScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
|
super.defineSynchedData(entityData);
|
|
diff --git a/net/minecraft/world/entity/monster/skeleton/Skeleton.java b/net/minecraft/world/entity/monster/skeleton/Skeleton.java
|
|
index ff352802190974eb466213c464b1f74541886c9b..12f87667ddeda1f57fe89f137b2df6cebef35c74 100644
|
|
--- a/net/minecraft/world/entity/monster/skeleton/Skeleton.java
|
|
+++ b/net/minecraft/world/entity/monster/skeleton/Skeleton.java
|
|
@@ -44,6 +44,13 @@ public class Skeleton extends AbstractSkeleton {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.skeletonMaxHealth);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
|
super.defineSynchedData(entityData);
|
|
diff --git a/net/minecraft/world/entity/monster/skeleton/Stray.java b/net/minecraft/world/entity/monster/skeleton/Stray.java
|
|
index ce8d70886fd84f10400a1bfee857434fe5e4857b..f028e74e34b16cfa4b5c808a8896521d4709d03f 100644
|
|
--- a/net/minecraft/world/entity/monster/skeleton/Stray.java
|
|
+++ b/net/minecraft/world/entity/monster/skeleton/Stray.java
|
|
@@ -40,6 +40,13 @@ public class Stray extends AbstractSkeleton {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.strayMaxHealth);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
public static boolean checkStraySpawnRules(
|
|
final EntityType<Stray> type, final ServerLevelAccessor level, final EntitySpawnReason spawnReason, final BlockPos pos, final RandomSource random
|
|
) {
|
|
diff --git a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
|
index 2a094760c7a60a5620c12527b2d69821f8849137..7ef07d92c1accc525f331e29406ff89ebe5afd05 100644
|
|
--- a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
|
+++ b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
|
@@ -51,6 +51,14 @@ public class WitherSkeleton extends AbstractSkeleton {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.witherSkeletonMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.witherSkeletonScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true));
|
|
diff --git a/net/minecraft/world/entity/monster/spider/CaveSpider.java b/net/minecraft/world/entity/monster/spider/CaveSpider.java
|
|
index 0ded67c38295e216b8359e58cd6c15025ea1b362..6a34024c8fc6b537d405afddd5bc9afa7a91a7b7 100644
|
|
--- a/net/minecraft/world/entity/monster/spider/CaveSpider.java
|
|
+++ b/net/minecraft/world/entity/monster/spider/CaveSpider.java
|
|
@@ -43,6 +43,14 @@ public class CaveSpider extends Spider {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.caveSpiderMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.caveSpiderScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public boolean doHurtTarget(final ServerLevel level, final Entity target) {
|
|
if (super.doHurtTarget(level, target)) {
|
|
diff --git a/net/minecraft/world/entity/monster/spider/Spider.java b/net/minecraft/world/entity/monster/spider/Spider.java
|
|
index 76505ffb0e308f866657a0a3af1bea120c26f097..0f87739c64f976f59c5740556d15763b4189a01e 100644
|
|
--- a/net/minecraft/world/entity/monster/spider/Spider.java
|
|
+++ b/net/minecraft/world/entity/monster/spider/Spider.java
|
|
@@ -70,6 +70,14 @@ public class Spider extends Monster {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.spiderMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.spiderScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(1, new FloatGoal(this));
|
|
diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
|
index 9c725e29cb56a2d03722a988bab79b6729bd898e..04b31af8a16eeec19c1c26e8794416a0c23b5c10 100644
|
|
--- a/net/minecraft/world/entity/monster/zombie/Drowned.java
|
|
+++ b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
|
@@ -104,6 +104,19 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
|
return new AmphibiousPathNavigation(this, level);
|
|
}
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.drownedMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.drownedScale);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected void randomizeReinforcementsChance() {
|
|
+ this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.drownedSpawnReinforcements);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void addBehaviourGoals() {
|
|
this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0));
|
|
diff --git a/net/minecraft/world/entity/monster/zombie/Husk.java b/net/minecraft/world/entity/monster/zombie/Husk.java
|
|
index 2dc09198f7bc86f5837c30e7e85eeb4c85b8d114..7a3747d67f1ce93e0703965144e32d134adbdee8 100644
|
|
--- a/net/minecraft/world/entity/monster/zombie/Husk.java
|
|
+++ b/net/minecraft/world/entity/monster/zombie/Husk.java
|
|
@@ -55,6 +55,18 @@ public class Husk extends Zombie {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.huskMaxHealth);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected void randomizeReinforcementsChance() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.huskSpawnReinforcements);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public boolean isSunSensitive() {
|
|
return false;
|
|
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
|
index d231dbf446c4e28df3512918ae50c1fc5e4db402..51e9175cf7f0c487d063247dca4e700012283431 100644
|
|
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
|
|
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
|
@@ -130,6 +130,14 @@ public class Zombie extends Monster {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombieMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.zombieScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
|
@@ -636,7 +644,7 @@ public class Zombie extends Monster {
|
|
}
|
|
|
|
protected void randomizeReinforcementsChance() {
|
|
- this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * 0.1F);
|
|
+ this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombieSpawnReinforcements); // Purpur - Configurable entity base attributes
|
|
}
|
|
|
|
private class ZombieAttackTurtleEggGoal extends RemoveBlockGoal {
|
|
diff --git a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
|
|
index 67031d93d9f59cf616c7ed1a3fcb18182148c6e6..2323ef6faec7bc62b28240e6dcc9f350de427c8e 100644
|
|
--- a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
|
|
+++ b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
|
|
@@ -104,6 +104,18 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombieVillagerMaxHealth);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected void randomizeReinforcementsChance() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombieVillagerSpawnReinforcements);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
|
super.defineSynchedData(entityData);
|
|
diff --git a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
|
|
index a9829f453a6ff8d8b844beb75b653799c763fbc1..8022a5ce1efedf5b9485c366d0a525077583712c 100644
|
|
--- a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
|
|
+++ b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
|
|
@@ -85,6 +85,14 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombifiedPiglinMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.zombifiedPiglinScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void addBehaviourGoals() {
|
|
this.goalSelector.addGoal(1, new SpearUseGoal<>(this, 1.0, 1.0, 10.0F, 2.0F));
|
|
@@ -271,7 +279,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
|
|
|
@Override
|
|
protected void randomizeReinforcementsChance() {
|
|
- this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(0.0);
|
|
+ this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombifiedPiglinSpawnReinforcements); // Purpur - Configurable entity base attributes
|
|
}
|
|
|
|
@Override
|
|
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
|
|
index 0aca0978653b3b1cf8ca51596a80fdc91225a9a9..c6dd2c42acb44715018402bbee9ec5742a2c1613 100644
|
|
--- a/net/minecraft/world/entity/npc/villager/Villager.java
|
|
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
|
|
@@ -265,6 +265,14 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.villagerMaxHealth);
|
|
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.villagerScale);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
public Brain<Villager> getBrain() {
|
|
return (Brain<Villager>)super.getBrain();
|
|
diff --git a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
|
index 45279d3473f42dd0f75315961bd178c17c8dac5d..9aefc3ecb98cd0333eb2adab82cd5846b76bfd2a 100644
|
|
--- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
|
+++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
|
@@ -84,6 +84,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
|
}
|
|
// Purpur end - Ridables
|
|
|
|
+ // Purpur start - Configurable entity base attributes
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wanderingTraderMaxHealth);
|
|
+ }
|
|
+ // Purpur end - Configurable entity base attributes
|
|
+
|
|
@Override
|
|
protected void registerGoals() {
|
|
this.goalSelector.addGoal(0, new FloatGoal(this));
|