mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Config to ignore Dragon Head wearers and stare aggro
Prevents Enderman from becoming aggresive towards players that are wearing a Dragon Head. Adds functionality to a useless item!
This commit is contained in:
@@ -1,41 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Encode42 <me@encode42.dev>
|
|
||||||
Date: Tue, 9 Mar 2021 16:16:01 -0500
|
|
||||||
Subject: [PATCH] Config to ignore Dragon Head wearers and stare aggro
|
|
||||||
|
|
||||||
Prevents Enderman from becoming aggresive towards players that are wearing a Dragon Head.
|
|
||||||
Adds functionality to a useless item!
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
|
|
||||||
index 09a49b598c35c8d51142aee7b4958bc344536cb3..efeb8a214c3e0ab6cb28a6f6e0d6417916ed670f 100644
|
|
||||||
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
|
||||||
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
|
||||||
@@ -260,7 +260,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
|
||||||
|
|
||||||
boolean isBeingStaredBy(Player player) {
|
|
||||||
// Paper start - EndermanAttackPlayerEvent
|
|
||||||
- final boolean shouldAttack = isBeingStaredBy0(player);
|
|
||||||
+ final boolean shouldAttack = !this.level().purpurConfig.endermanDisableStareAggro && isBeingStaredBy0(player); // Purpur
|
|
||||||
final com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event = new com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent((org.bukkit.entity.Enderman) getBukkitEntity(), (org.bukkit.entity.Player) player.getBukkitEntity());
|
|
||||||
event.setCancelled(!shouldAttack);
|
|
||||||
return event.callEvent();
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
index fe8988fc29be469af3d33fb87f0c88ee35f0b779..c1f1c20bfa038e66e3fc2dab1a2d5ccc1bbbd3f2 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -1034,6 +1034,7 @@ public class PurpurWorldConfig {
|
|
||||||
public boolean endermanTakeDamageFromWater = true;
|
|
||||||
public boolean endermanAggroEndermites = true;
|
|
||||||
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
|
|
||||||
+ public boolean endermanDisableStareAggro = false;
|
|
||||||
private void endermanSettings() {
|
|
||||||
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
|
||||||
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
|
||||||
@@ -1055,6 +1056,7 @@ public class PurpurWorldConfig {
|
|
||||||
endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater);
|
|
||||||
endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites);
|
|
||||||
endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned);
|
|
||||||
+ endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean endermiteRidable = false;
|
|
||||||
@@ -5,10 +5,19 @@
|
|||||||
this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt));
|
this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt));
|
||||||
this.targetSelector.addGoal(2, new HurtByTargetGoal(this));
|
this.targetSelector.addGoal(2, new HurtByTargetGoal(this));
|
||||||
- this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false));
|
- this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false));
|
||||||
+ this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, 10, true, false, (entityliving, ignored) -> entityliving.level().purpurConfig.endermanAggroEndermites && entityliving instanceof Endermite endermite && (!entityliving.level().purpurConfig.endermanAggroEndermitesOnlyIfPlayerSpawned || endermite.isPlayerSpawned()))); // Purpur - Config Enderman aggressiveness towards Endermites
|
+ this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, 10, true, false, (entityliving, ignored) -> entityliving.level().purpurConfig.endermanAggroEndermites && entityliving instanceof Endermite endermite && (!entityliving.level().purpurConfig.endermanAggroEndermitesOnlyIfPlayerSpawned || endermite.isPlayerSpawned()))); // Purpur
|
||||||
this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false));
|
this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -230,7 +_,7 @@
|
||||||
|
|
||||||
|
boolean isBeingStaredBy(Player player) {
|
||||||
|
// Paper start - EndermanAttackPlayerEvent
|
||||||
|
- final boolean shouldAttack = isBeingStaredBy0(player);
|
||||||
|
+ final boolean shouldAttack = !this.level().purpurConfig.endermanDisableStareAggro && isBeingStaredBy0(player); // Purpur - Config to ignore Dragon Head wearers and stare aggro
|
||||||
|
final com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event = new com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent((org.bukkit.entity.Enderman) getBukkitEntity(), (org.bukkit.entity.Player) player.getBukkitEntity());
|
||||||
|
event.setCancelled(!shouldAttack);
|
||||||
|
return event.callEvent();
|
||||||
@@ -385,6 +_,7 @@
|
@@ -385,6 +_,7 @@
|
||||||
public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) {
|
public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) {
|
||||||
if (this.isInvulnerableTo(level, damageSource)) {
|
if (this.isInvulnerableTo(level, damageSource)) {
|
||||||
|
|||||||
@@ -1026,6 +1026,7 @@ public class PurpurWorldConfig {
|
|||||||
public boolean endermanTakeDamageFromWater = true;
|
public boolean endermanTakeDamageFromWater = true;
|
||||||
public boolean endermanAggroEndermites = true;
|
public boolean endermanAggroEndermites = true;
|
||||||
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
|
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
|
||||||
|
public boolean endermanDisableStareAggro = false;
|
||||||
private void endermanSettings() {
|
private void endermanSettings() {
|
||||||
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
||||||
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
||||||
@@ -1047,6 +1048,7 @@ public class PurpurWorldConfig {
|
|||||||
endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater);
|
endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater);
|
||||||
endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites);
|
endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites);
|
||||||
endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned);
|
endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned);
|
||||||
|
endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean endermiteRidable = false;
|
public boolean endermiteRidable = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user