From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Mon, 30 Aug 2021 22:49:53 -0500 Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java index ccdd439a89b7e7e10ee960cfe1e5e119d5367799..49292ae53f2b4554064daa4953a8cec00aa1fa98 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java @@ -135,7 +135,7 @@ public class DefaultAttributes { .put(EntityType.LLAMA, Llama.createAttributes().build()) .put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()) .put(EntityType.MANNEQUIN, LivingEntity.createLivingAttributes().build()) - .put(EntityType.MOOSHROOM, Cow.createAttributes().build()) + .put(EntityType.MOOSHROOM, net.minecraft.world.entity.animal.cow.AbstractCow.createAttributes().build()) // Purpur - Cows naturally aggressive to players chance .put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) .put(EntityType.NAUTILUS, Nautilus.createAttributes().build()) .put(EntityType.OCELOT, Ocelot.createAttributes().build()) diff --git a/net/minecraft/world/entity/animal/cow/Cow.java b/net/minecraft/world/entity/animal/cow/Cow.java index bb8c75d20e6a1300d68ae75233962bdc26736c77..9fa18b190091bbfcb9a65d8d35f68fc7375f504f 100644 --- a/net/minecraft/world/entity/animal/cow/Cow.java +++ b/net/minecraft/world/entity/animal/cow/Cow.java @@ -23,6 +23,8 @@ import net.minecraft.world.level.storage.ValueOutput; import org.jspecify.annotations.Nullable; public class Cow extends AbstractCow { + private boolean isNaturallyAggressiveToPlayers; // Purpur - Cows naturally aggressive to players chance + private static final EntityDataAccessor> DATA_VARIANT_ID = SynchedEntityData.defineId(Cow.class, EntityDataSerializers.COW_VARIANT); public Cow(EntityType type, Level level) { @@ -49,8 +51,9 @@ public class Cow extends AbstractCow { // 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); + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SCALE).setBaseValue(this.level().purpurConfig.cowScale); + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.cowNaturallyAggressiveToPlayersDamage); // Purpur - Cows naturally aggressive to players chance } // Purpur end - Configurable entity base attributes @@ -68,6 +71,13 @@ public class Cow extends AbstractCow { } // Purpur end - Toggle for water sensitive mob damage + @Override + protected void registerGoals() { + super.registerGoals(); + this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur - Cows naturally aggressive to players chance + this.targetSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, net.minecraft.world.entity.player.Player.class, 10, true, false, (ignored, ignored2) -> isNaturallyAggressiveToPlayers)); // Purpur - Cows naturally aggressive to players chance + } + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); @@ -80,6 +90,12 @@ public class Cow extends AbstractCow { VariantUtils.writeVariant(output, this.getVariant()); } + // Purpur start - Cows naturally aggressive to players chance + public static net.minecraft.world.entity.ai.attributes.AttributeSupplier.Builder createAttributes() { + return AbstractCow.createAttributes().add(net.minecraft.world.entity.ai.attributes.Attributes.ATTACK_DAMAGE, 0.0D); + } + // Purpur end - Cows naturally aggressive to players chance + @Override protected void readAdditionalSaveData(ValueInput input) { super.readAdditionalSaveData(input); @@ -100,6 +116,7 @@ public class Cow extends AbstractCow { public SpawnGroupData finalizeSpawn( ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData ) { + this.isNaturallyAggressiveToPlayers = level.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance > 0.0D && random.nextDouble() <= level.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance; // Purpur - Cows naturally aggressive to players chance VariantUtils.selectVariantToSpawn(SpawnContext.create(level, this.blockPosition()), Registries.COW_VARIANT).ifPresent(this::setVariant); return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); }