From c01cdfacaaa03c66a34485f1722291bcc07be971 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 29 Nov 2019 20:33:41 -0600 Subject: [PATCH] Phantoms only attack insomniacs --- src/main/java/net/minecraft/server/EntityPhantom.java | 7 +++++-- src/main/java/net/minecraft/server/IEntitySelector.java | 1 + src/main/java/net/pl3x/purpur/PurpurConfig.java | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java index 5cfa69b32..a98453665 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java @@ -392,8 +392,11 @@ public class EntityPhantom extends EntityFlying implements IMonster { EntityHuman entityhuman = (EntityHuman) iterator.next(); if (EntityPhantom.this.a((EntityLiving) entityhuman, PathfinderTargetCondition.a)) { - EntityPhantom.this.setGoalTarget(entityhuman, org.bukkit.event.entity.EntityTargetEvent.TargetReason.CLOSEST_PLAYER, true); // CraftBukkit - reason - return true; + // Purpur start + if (!net.pl3x.purpur.PurpurConfig.phantomsOnlyAttackInsomniacs || IEntitySelector.isInsomniac.test(entityhuman)) { + return EntityPhantom.this.setGoalTarget(entityhuman, org.bukkit.event.entity.EntityTargetEvent.TargetReason.CLOSEST_PLAYER, true); // CraftBukkit - reason + } + // Purpur end } } } diff --git a/src/main/java/net/minecraft/server/IEntitySelector.java b/src/main/java/net/minecraft/server/IEntitySelector.java index 71c61dc45..becf9d29e 100644 --- a/src/main/java/net/minecraft/server/IEntitySelector.java +++ b/src/main/java/net/minecraft/server/IEntitySelector.java @@ -25,6 +25,7 @@ public final class IEntitySelector { return !entity.isSpectator(); }; public static Predicate notAfk = (player) -> !player.isAfk(); // Purpur + public static Predicate isInsomniac = (player) -> MathHelper.clamp(((EntityPlayer) player).getStatisticManager().getStatisticValue(StatisticList.CUSTOM.b(StatisticList.TIME_SINCE_REST)), 1, Integer.MAX_VALUE) >= 72000; // Purpur public static Predicate a(double d0, double d1, double d2, double d3) { double d4 = d3 * d3; diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java index 148fc22ff..46dc8cf79 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -230,10 +230,12 @@ public class PurpurConfig { public static double crystalsAttackPhantomsRadius = 0.0D; public static float crystalsAttackPhantomDamage = 1.0F; public static double phantomsOrbitCrystalsRadius = 0.0D; + public static boolean phantomsOnlyAttackInsomniacs = false; private static void phantomSettings() { crystalsAttackPhantomsRadius = getDouble("settings.mobs.phantom.crystals-attack-range", crystalsAttackPhantomsRadius); crystalsAttackPhantomDamage = (float) getDouble("settings.mobs.phantom.crystals-attack-damage", crystalsAttackPhantomDamage); phantomsOrbitCrystalsRadius = getDouble("settings.mobs.phantom.orbit-crystal-radius", phantomsOrbitCrystalsRadius); + phantomsOnlyAttackInsomniacs = getBoolean("settings.mobs.phantom.only-attack-insomniacs", phantomsOnlyAttackInsomniacs); } public static double killerRabbitChance = 0.0D; -- 2.24.0