Skip to content

Commit 124d079

Browse files
Fix issues with mob conversion (#6831)
1 parent 29bb5a9 commit 124d079

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Jake Potrebic <jake.m.potrebic@gmail.com>
3+
Date: Sun, 24 Oct 2021 20:29:27 -0700
4+
Subject: [PATCH] Fix issues with mob conversion
5+
6+
7+
diff --git a/src/main/java/org/bukkit/entity/PiglinAbstract.java b/src/main/java/org/bukkit/entity/PiglinAbstract.java
8+
index 87f4b7ad7c0a95a7123d142fa023c5da5c760341..70a45e657c6cab6058d1a56fc51c5df79fdce60f 100644
9+
--- a/src/main/java/org/bukkit/entity/PiglinAbstract.java
10+
+++ b/src/main/java/org/bukkit/entity/PiglinAbstract.java
11+
@@ -31,14 +31,17 @@ public interface PiglinAbstract extends Monster, Ageable {
12+
public int getConversionTime();
13+
14+
/**
15+
- * Sets the amount of ticks until this entity will be converted to a
16+
- * Zombified Piglin.
17+
+ * Sets the conversion counter value. The counter is incremented
18+
+ * every tick the {@link #isConverting()} returns true. Setting this
19+
+ * value will not start the conversion if the {@link PiglinAbstract} is
20+
+ * not in a valid environment ({@link org.bukkit.World#isPiglinSafe})
21+
+ * to convert or {@link #isImmuneToZombification()} is true or
22+
+ * has no AI.
23+
*
24+
- * When this reaches 0, the entity will be converted. A value of less than 0
25+
- * will stop the current conversion process without converting the current
26+
- * entity.
27+
+ * When this reaches 300, the entity will be converted. To stop the
28+
+ * conversion use {@link #setImmuneToZombification(boolean)}.
29+
*
30+
- * @param time new conversion time
31+
+ * @param time new conversion counter
32+
*/
33+
public void setConversionTime(int time);
34+
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Jake Potrebic <jake.m.potrebic@gmail.com>
3+
Date: Sun, 24 Oct 2021 20:29:45 -0700
4+
Subject: [PATCH] Fix issues with mob conversion
5+
6+
7+
diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java
8+
index 116709ba2b298268ac806e6e45f2e910ca600706..1eeaf0cc9b00afd54f38f9cb50404ec9f9ba51f8 100644
9+
--- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java
10+
+++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java
11+
@@ -86,10 +86,15 @@ public class Skeleton extends AbstractSkeleton {
12+
}
13+
14+
protected void doFreezeConversion() {
15+
- this.convertTo(EntityType.STRAY, true, org.bukkit.event.entity.EntityTransformEvent.TransformReason.FROZEN, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.FROZEN); // CraftBukkit - add spawn and transform reasons
16+
- if (!this.isSilent()) {
17+
+ Stray stray = this.convertTo(EntityType.STRAY, true, org.bukkit.event.entity.EntityTransformEvent.TransformReason.FROZEN, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.FROZEN); // CraftBukkit - add spawn and transform reasons // Paper - track result of conversion
18+
+ if (stray != null && !this.isSilent()) { // Paper - only send event if conversion succeeded
19+
this.level.levelEvent((Player) null, 1048, this.blockPosition(), 0);
20+
}
21+
+ // Paper start - reset conversion time to prevent event spam
22+
+ if (stray == null) {
23+
+ this.conversionTime = 300;
24+
+ }
25+
+ // Paper end
26+
27+
}
28+
29+
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java
30+
index cbf181b30bae134150933c721f22161e3e9ffca3..12a1cb536d5cb109cac75636369ed1b2bfa3a0a4 100644
31+
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java
32+
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java
33+
@@ -105,6 +105,11 @@ public abstract class AbstractPiglin extends Monster {
34+
if (entitypigzombie != null) {
35+
entitypigzombie.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 200, 0));
36+
}
37+
+ // Paper start - reset to prevent event spam
38+
+ else {
39+
+ this.timeInOverworld = 0;
40+
+ }
41+
+ // Paper end
42+
43+
}
44+
45+
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java
46+
index 61e2841fea6603e3e5fbd004de7ffdfb79fc9981..4a873a278a4dc76d868d789574a7890bf53832d7 100644
47+
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java
48+
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java
49+
@@ -28,7 +28,7 @@ public class CraftSkeleton extends CraftAbstractSkeleton implements Skeleton {
50+
this.getHandle().conversionTime = -1;
51+
this.getHandle().getEntityData().set(net.minecraft.world.entity.monster.Skeleton.DATA_STRAY_CONVERSION_ID, false);
52+
} else {
53+
- this.getHandle().getSwimAmount(time); // PAIL rename startStrayConversion
54+
+ this.getHandle().startFreezeConversion(time); // PAIL rename startStrayConversion // Paper - nope, that's not the right method
55+
}
56+
}
57+

0 commit comments

Comments
 (0)