mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-22 19:07:44 +01:00
76 lines
4.8 KiB
Diff
76 lines
4.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
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 46022a0aabc9c319deeb75913d356eeb74f1a12c..9952eed6a8ac31c757d5c27e043b85d7a949b481 100644
|
|
--- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
|
|
+++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
|
|
@@ -126,7 +126,7 @@ public class DefaultAttributes {
|
|
.put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build())
|
|
.put(EntityType.LLAMA, Llama.createAttributes().build())
|
|
.put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build())
|
|
- .put(EntityType.MOOSHROOM, Cow.createAttributes().build())
|
|
+ .put(EntityType.MOOSHROOM, net.minecraft.world.entity.animal.AbstractCow.createAttributes().build()) // Purpur - Cows naturally aggressive to players chance
|
|
.put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build())
|
|
.put(EntityType.OCELOT, Ocelot.createAttributes().build())
|
|
.put(EntityType.PANDA, Panda.createAttributes().build())
|
|
diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java
|
|
index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..34700b4e599efa6fb9ea8c1d0da26bd7fe8fb9eb 100644
|
|
--- a/net/minecraft/world/entity/animal/Cow.java
|
|
+++ b/net/minecraft/world/entity/animal/Cow.java
|
|
@@ -22,6 +22,8 @@ import net.minecraft.world.level.Level;
|
|
import net.minecraft.world.level.ServerLevelAccessor;
|
|
|
|
public class Cow extends AbstractCow {
|
|
+ private boolean isNaturallyAggressiveToPlayers; // Purpur - Cows naturally aggressive to players chance
|
|
+
|
|
private static final EntityDataAccessor<Holder<CowVariant>> DATA_VARIANT_ID = SynchedEntityData.defineId(Cow.class, EntityDataSerializers.COW_VARIANT);
|
|
|
|
public Cow(EntityType<? extends Cow> entityType, Level level) {
|
|
@@ -50,6 +52,7 @@ public class Cow extends AbstractCow {
|
|
public void initAttributes() {
|
|
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth);
|
|
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.cowScale);
|
|
+ this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.cowNaturallyAggressiveToPlayersDamage); // Purpur - Cows naturally aggressive to players chance
|
|
}
|
|
// Purpur end - Configurable entity base attributes
|
|
|
|
@@ -67,6 +70,21 @@ public class Cow extends AbstractCow {
|
|
}
|
|
// Purpur end - Toggle for water sensitive mob damage
|
|
|
|
+ // Purpur start - Cows naturally aggressive to players chance
|
|
+ @Override
|
|
+ public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.EntitySpawnReason spawnReason, net.minecraft.world.entity.SpawnGroupData entityData) {
|
|
+ this.isNaturallyAggressiveToPlayers = world.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance > 0.0D && random.nextDouble() <= world.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance;
|
|
+ return super.finalizeSpawn(world, difficulty, spawnReason, entityData);
|
|
+ }
|
|
+ // Purpur end - Cows naturally aggressive to players chance
|
|
+
|
|
+ @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);
|
|
@@ -79,6 +97,12 @@ public class Cow extends AbstractCow {
|
|
VariantUtils.writeVariant(compound, 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
|
|
public void readAdditionalSaveData(CompoundTag compound) {
|
|
super.readAdditionalSaveData(compound);
|