From 4e5bf94149c891f4d3ef78014d3a18cb027f97d7 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 20 Feb 2020 14:16:20 -0600 Subject: [PATCH] Fix multiple issues with phantoms --- patches/server/0004-Ridables.patch | 38 +++++++++++--- ...0020-Phantoms-only-attack-insomniacs.patch | 6 +-- ...ed-to-crystals-and-crystals-shoot-ph.patch | 50 +++++++++---------- ...0098-Fix-a-possible-NPE-for-lukeeexd.patch | 26 ---------- 4 files changed, 58 insertions(+), 62 deletions(-) delete mode 100644 patches/server/0098-Fix-a-possible-NPE-for-lukeeexd.patch diff --git a/patches/server/0004-Ridables.patch b/patches/server/0004-Ridables.patch index 392a63300..fa4cfc6be 100644 --- a/patches/server/0004-Ridables.patch +++ b/patches/server/0004-Ridables.patch @@ -1,4 +1,4 @@ -From 93bd02ed77297b7123ec4b9208f2bd43d5a7d827 Mon Sep 17 00:00:00 2001 +From 08ce7fec031b626b24d380cac2563cf331672249 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 6 Feb 2020 19:53:59 -0600 Subject: [PATCH] Ridables @@ -47,7 +47,7 @@ Subject: [PATCH] Ridables .../net/minecraft/server/EntityOcelot.java | 19 + .../net/minecraft/server/EntityPanda.java | 47 +- .../net/minecraft/server/EntityParrot.java | 69 ++- - .../net/minecraft/server/EntityPhantom.java | 56 +- + .../net/minecraft/server/EntityPhantom.java | 59 +- .../java/net/minecraft/server/EntityPig.java | 48 +- .../net/minecraft/server/EntityPigZombie.java | 17 + .../net/minecraft/server/EntityPillager.java | 19 + @@ -95,7 +95,7 @@ Subject: [PATCH] Ridables .../controller/ControllerMoveWASDWater.java | 43 ++ .../pathfinder/PathfinderGoalHasRider.java | 21 + .../craftbukkit/entity/CraftEntity.java | 27 + - 91 files changed, 3032 insertions(+), 194 deletions(-) + 91 files changed, 3035 insertions(+), 194 deletions(-) create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java @@ -2657,7 +2657,7 @@ index 1402087612..95b786a5a6 100644 this.goalSelector.a(2, this.goalSit); this.goalSelector.a(2, new PathfinderGoalFollowOwner(this, 1.0D, 5.0F, 1.0F, true)); diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 90eeddb1af..954edf73f7 100644 +index 90eeddb1af..850d5efff1 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java @@ -22,6 +22,28 @@ public class EntityPhantom extends EntityFlying implements IMonster { @@ -2718,7 +2718,31 @@ index 90eeddb1af..954edf73f7 100644 this.setOnFire(8); } -@@ -447,14 +472,23 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -215,6 +240,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { + + @Override + public boolean a() { ++ if (getRider() != null) return false; // Purpur - pathfinder does not have a flag + if (this.c > 0) { + --this.c; + return false; +@@ -244,6 +270,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { + + @Override + public boolean b() { ++ if (getRider() != null) return false; // Purpur - pathfinder does not have a flag + EntityLiving entityliving = EntityPhantom.this.getGoalTarget(); + + return entityliving != null ? EntityPhantom.this.a(entityliving, PathfinderTargetCondition.a) : false; +@@ -258,6 +285,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { + + @Override + public boolean a() { ++ if (getRider() != null) return false; // Purpur - pathfinder does not have a flag + EntityLiving entityliving = EntityPhantom.this.getGoalTarget(); + + return entityliving != null ? EntityPhantom.this.a(EntityPhantom.this.getGoalTarget(), PathfinderTargetCondition.a) : false; +@@ -447,14 +475,23 @@ public class EntityPhantom extends EntityFlying implements IMonster { } } @@ -2744,7 +2768,7 @@ index 90eeddb1af..954edf73f7 100644 } class d extends EntityAIBodyControl { -@@ -470,7 +504,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -470,7 +507,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { } } @@ -2753,7 +2777,7 @@ index 90eeddb1af..954edf73f7 100644 private float j = 0.1F; -@@ -479,7 +513,19 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -479,7 +516,19 @@ public class EntityPhantom extends EntityFlying implements IMonster { } @Override diff --git a/patches/server/0020-Phantoms-only-attack-insomniacs.patch b/patches/server/0020-Phantoms-only-attack-insomniacs.patch index 17befbbc8..76d5cf387 100644 --- a/patches/server/0020-Phantoms-only-attack-insomniacs.patch +++ b/patches/server/0020-Phantoms-only-attack-insomniacs.patch @@ -1,4 +1,4 @@ -From af3a9b799fd16d9eaa22aaed6a4981bde0861e86 Mon Sep 17 00:00:00 2001 +From 71fcbab5c7496fbaaddf8d398ae6d7dd26590a9f 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 @@ -10,10 +10,10 @@ Subject: [PATCH] Phantoms only attack insomniacs 3 files changed, 4 insertions(+) diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 954edf73f7..4bd9ea63b9 100644 +index 850d5efff1..bbbb6e601b 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java -@@ -257,6 +257,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -258,6 +258,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { EntityHuman entityhuman = (EntityHuman) iterator.next(); if (EntityPhantom.this.a((EntityLiving) entityhuman, PathfinderTargetCondition.a)) { diff --git a/patches/server/0021-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0021-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index d152adfd3..5e4ffc100 100644 --- a/patches/server/0021-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0021-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -1,4 +1,4 @@ -From c7ad30ef7fead11565164b8c1c8a2b866ccca031 Mon Sep 17 00:00:00 2001 +From 0cb18f1bf59e372cf29c3487eb1d375574ad8df9 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 9 May 2019 18:26:06 -0500 Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms @@ -7,10 +7,10 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms .../net/minecraft/server/DamageSource.java | 1 + .../java/net/minecraft/server/Entity.java | 8 +- .../minecraft/server/EntityEnderCrystal.java | 49 +++++ - .../net/minecraft/server/EntityPhantom.java | 176 +++++++++++++++++- + .../net/minecraft/server/EntityPhantom.java | 174 +++++++++++++++++- .../net/minecraft/server/IEntityAccess.java | 1 + .../net/pl3x/purpur/PurpurWorldConfig.java | 6 + - 6 files changed, 228 insertions(+), 13 deletions(-) + 6 files changed, 228 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/minecraft/server/DamageSource.java b/src/main/java/net/minecraft/server/DamageSource.java index 816d301f1c..0971f25b56 100644 @@ -123,7 +123,7 @@ index a57d0089d8..02952c3af8 100644 @Override protected void b(NBTTagCompound nbttagcompound) { diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 4bd9ea63b9..9cae8885d2 100644 +index bbbb6e601b..964c043eb1 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java @@ -8,9 +8,10 @@ import javax.annotation.Nullable; @@ -327,32 +327,30 @@ index 4bd9ea63b9..9cae8885d2 100644 class b extends PathfinderGoal { private final PathfinderTargetCondition b; -@@ -236,6 +393,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { - private b() { - this.b = (new PathfinderTargetCondition()).a(64.0D); - this.c = 20; -+ this.a(EnumSet.of(PathfinderGoal.Type.TARGET)); // Purpur - } - - @Override -@@ -280,7 +438,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { - - private int b; - -- private c() {} -+ private c() { this.a(EnumSet.of(PathfinderGoal.Type.MOVE, PathfinderGoal.Type.LOOK)); } // Purpur - +@@ -241,6 +398,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { @Override public boolean a() { -@@ -465,7 +623,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { - abstract class h extends PathfinderGoal { + if (getRider() != null) return false; // Purpur - pathfinder does not have a flag ++ if (isCirclingCrystal()) return false; // Purpur - pathfinder does not have a flag + if (this.c > 0) { + --this.c; + return false; +@@ -272,6 +430,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { + @Override + public boolean b() { + if (getRider() != null) return false; // Purpur - pathfinder does not have a flag ++ if (isCirclingCrystal()) return false; // Purpur - pathfinder does not have a flag + EntityLiving entityliving = EntityPhantom.this.getGoalTarget(); - public h() { -- this.a(EnumSet.of(PathfinderGoal.Type.MOVE)); -+ this.a(EnumSet.of(PathfinderGoal.Type.MOVE, PathfinderGoal.Type.LOOK)); - } + return entityliving != null ? EntityPhantom.this.a(entityliving, PathfinderTargetCondition.a) : false; +@@ -287,6 +446,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { + @Override + public boolean a() { + if (getRider() != null) return false; // Purpur - pathfinder does not have a flag ++ if (isCirclingCrystal()) return false; // Purpur - pathfinder does not have a flag + EntityLiving entityliving = EntityPhantom.this.getGoalTarget(); - protected boolean g() { + return entityliving != null ? EntityPhantom.this.a(EntityPhantom.this.getGoalTarget(), PathfinderTargetCondition.a) : false; diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java index 4157e50e4d..774ec96f0a 100644 --- a/src/main/java/net/minecraft/server/IEntityAccess.java diff --git a/patches/server/0098-Fix-a-possible-NPE-for-lukeeexd.patch b/patches/server/0098-Fix-a-possible-NPE-for-lukeeexd.patch deleted file mode 100644 index c91c7406e..000000000 --- a/patches/server/0098-Fix-a-possible-NPE-for-lukeeexd.patch +++ /dev/null @@ -1,26 +0,0 @@ -From e73d5d6a8519d763d801f66c0bb7098e83dafdbd Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Tue, 18 Feb 2020 20:09:30 -0600 -Subject: [PATCH] Fix a possible NPE for lukeeexd - ---- - src/main/java/net/minecraft/server/EntityPhantom.java | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 9cae8885d2..8d22fd2f50 100644 ---- a/src/main/java/net/minecraft/server/EntityPhantom.java -+++ b/src/main/java/net/minecraft/server/EntityPhantom.java -@@ -474,7 +474,8 @@ public class EntityPhantom extends EntityFlying implements IMonster { - } - - private void g() { -- EntityPhantom.this.d = (new BlockPosition(EntityPhantom.this.getGoalTarget())).up(20 + EntityPhantom.this.random.nextInt(20)); -+ EntityLiving target = EntityPhantom.this.getGoalTarget(); if (target == null) return; // Purpur - this _shouldn't_ be needed at all... -+ EntityPhantom.this.d = (new BlockPosition(target)).up(20 + EntityPhantom.this.random.nextInt(20)); // Purpur - if (EntityPhantom.this.d.getY() < EntityPhantom.this.world.getSeaLevel()) { - EntityPhantom.this.d = new BlockPosition(EntityPhantom.this.d.getX(), EntityPhantom.this.world.getSeaLevel() + 1, EntityPhantom.this.d.getZ()); - } --- -2.24.0 -