Skip to content

Commit a686ff5

Browse files
authored
Add more missing entity API (#7592)
1 parent 7b46444 commit a686ff5

File tree

3 files changed

+253
-0
lines changed

3 files changed

+253
-0
lines changed

build-data/paper.at

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,11 @@ public net.minecraft.world.entity.animal.Fox isFaceplanted()Z
221221
public net.minecraft.world.entity.animal.Fox setFaceplanted(Z)V
222222
public net.minecraft.world.entity.animal.Panda getEatCounter()I
223223
public net.minecraft.world.entity.animal.Panda setEatCounter(I)V
224+
public net.minecraft.world.entity.animal.Bee isRolling()Z
225+
public net.minecraft.world.entity.animal.Bee setRolling(Z)V
226+
public net.minecraft.world.entity.monster.piglin.Piglin isChargingCrossbow()Z
227+
public net.minecraft.world.entity.monster.Vex hasLimitedLife
228+
public net.minecraft.world.entity.monster.Vex limitedLifeTicks
224229

225230
# Cook speed multipler API
226231
public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity recipeType

patches/api/0312-Missing-Entity-Behavior-API.patch

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,39 @@ index 0d88dce9978243a1f995c5fb448c5d71b01136eb..cad47139de57642fb3bb483e7a5acaa7
6969
+ public void setEating(boolean eating);
7070
+ // Paper end - Horse API
7171
}
72+
diff --git a/src/main/java/org/bukkit/entity/Bee.java b/src/main/java/org/bukkit/entity/Bee.java
73+
index adb20a9abba33c32d553f620fa82b27dff64ab5f..ca6baec5ce00b4d169ab4ff416f616db32615010 100644
74+
--- a/src/main/java/org/bukkit/entity/Bee.java
75+
+++ b/src/main/java/org/bukkit/entity/Bee.java
76+
@@ -93,4 +93,28 @@ public interface Bee extends Animals {
77+
* @param ticks Ticks the bee cannot enter a hive for
78+
*/
79+
void setCannotEnterHiveTicks(int ticks);
80+
+
81+
+ // Paper start
82+
+ /**
83+
+ * Sets the override for if the bee is currently rolling.
84+
+ *
85+
+ * @param rolling is rolling, or unset for vanilla behavior
86+
+ */
87+
+ void setRollingOverride(@org.jetbrains.annotations.NotNull net.kyori.adventure.util.TriState rolling);
88+
+
89+
+ /**
90+
+ * Gets the plugin set override for if the bee is currently rolling.
91+
+ *
92+
+ * @return plugin set rolling override
93+
+ */
94+
+ @org.jetbrains.annotations.NotNull
95+
+ net.kyori.adventure.util.TriState getRollingOverride();
96+
+
97+
+ /**
98+
+ * Gets if the bee is currently rolling.
99+
+ *
100+
+ * @return is rolling
101+
+ */
102+
+ boolean isRolling();
103+
+ // Paper end
104+
}
72105
diff --git a/src/main/java/org/bukkit/entity/Cat.java b/src/main/java/org/bukkit/entity/Cat.java
73106
index c2a566b864c82ffb094b7334d9e6e25a1bfc87d1..c340fecb61bac66baf0f44189d21bc85289b1269 100644
74107
--- a/src/main/java/org/bukkit/entity/Cat.java
@@ -400,6 +433,36 @@ index a6a7429ed2e1eefb2b12b7480ed74fcc3963a864..1dcc2c8f4899da029af8b1c1b2ff1b5e
400433
+ boolean isSitting();
401434
+ // Paper end - Panda API
402435
}
436+
diff --git a/src/main/java/org/bukkit/entity/Piglin.java b/src/main/java/org/bukkit/entity/Piglin.java
437+
index 6fdc0e0bb62189dbf3cf9ce7a87b7fbb995956a3..d4cb4b0ed1d9766a87867dcf1a3a839526ba9332 100644
438+
--- a/src/main/java/org/bukkit/entity/Piglin.java
439+
+++ b/src/main/java/org/bukkit/entity/Piglin.java
440+
@@ -90,4 +90,25 @@ public interface Piglin extends PiglinAbstract, InventoryHolder, com.destroystok
441+
*/
442+
@NotNull
443+
public Set<Material> getBarterList();
444+
+
445+
+ // Paper start
446+
+ /**
447+
+ * Causes the piglin to appear as if they are charging
448+
+ * a crossbow.
449+
+ * <p>
450+
+ * This works with any item currently held in the piglin's hand.
451+
+ *
452+
+ * @param chargingCrossbow is charging
453+
+ */
454+
+ void setChargingCrossbow(boolean chargingCrossbow);
455+
+
456+
+ /**
457+
+ * Gets if the piglin is currently charging the
458+
+ * item in their hand.
459+
+ *
460+
+ * @return is charging
461+
+ */
462+
+ boolean isChargingCrossbow();
463+
+ // Paper end
464+
+
465+
}
403466
diff --git a/src/main/java/org/bukkit/entity/PolarBear.java b/src/main/java/org/bukkit/entity/PolarBear.java
404467
index 479f7a7c54c85cb685f56e60906650d1989c03ff..60267ee382de80fab86b440ff72a2455f427d148 100644
405468
--- a/src/main/java/org/bukkit/entity/PolarBear.java
@@ -498,6 +561,48 @@ index 28cdb3b544572ba7aeb9061e3163e3895ac7d4e6..c8015ff610e3c1222cb368ea1d8a0c2f
498561
+ void setLoyaltyLevel(int loyaltyLevel);
499562
+}
500563
+// Paper end
564+
diff --git a/src/main/java/org/bukkit/entity/Vex.java b/src/main/java/org/bukkit/entity/Vex.java
565+
index c34a3ea7b4d16817b4bee25d5c69787e22ec44d8..6a39042f1ea18b4849c4b6d2343938e0f430aefb 100644
566+
--- a/src/main/java/org/bukkit/entity/Vex.java
567+
+++ b/src/main/java/org/bukkit/entity/Vex.java
568+
@@ -40,5 +40,37 @@ public interface Vex extends Monster {
569+
* @param summoner New summoner
570+
*/
571+
void setSummoner(@Nullable Mob summoner);
572+
+
573+
+ /**
574+
+ * Gets if this vex should start to take damage
575+
+ * once {@link Vex#getLimitedLifetimeTicks()} is less than or equal to 0.
576+
+ *
577+
+ * @return will take damage
578+
+ */
579+
+ boolean hasLimitedLifetime();
580+
+
581+
+ /**
582+
+ * Sets if this vex should start to take damage
583+
+ * once {@link Vex#getLimitedLifetimeTicks()} is less than or equal to 0.
584+
+ *
585+
+ * @param hasLimitedLifetime should take damage
586+
+ */
587+
+ void setLimitedLifetime(boolean hasLimitedLifetime);
588+
+
589+
+ /**
590+
+ * Gets the number of ticks remaining until the vex will start
591+
+ * to take damage.
592+
+ *
593+
+ * @return ticks until the vex will start to take damage
594+
+ */
595+
+ int getLimitedLifetimeTicks();
596+
+
597+
+ /**
598+
+ * Sets the number of ticks remaining until the vex takes damage.
599+
+ * This number is ticked down only if {@link Vex#hasLimitedLifetime()} is true.
600+
+ *
601+
+ * @param ticks ticks remaining
602+
+ */
603+
+ void setLimitedLifetimeTicks(int ticks);
604+
// Paper end
605+
}
501606
diff --git a/src/main/java/org/bukkit/entity/Wither.java b/src/main/java/org/bukkit/entity/Wither.java
502607
index 426d3693317cd303d35d8203026b528d87e401d5..8c95cd6933f11076de936854f379e6fc8600b525 100644
503608
--- a/src/main/java/org/bukkit/entity/Wither.java
@@ -537,3 +642,30 @@ index 426d3693317cd303d35d8203026b528d87e401d5..8c95cd6933f11076de936854f379e6fc
537642
+ void setCanTravelThroughPortals(boolean value);
538643
+ // Paper end
539644
}
645+
diff --git a/src/main/java/org/bukkit/entity/Wolf.java b/src/main/java/org/bukkit/entity/Wolf.java
646+
index 0e5decadf31140d6cb121c298f935ccc12c7a7e7..490395f38c4d9977d30a6f48585a4ea0e7faff0f 100644
647+
--- a/src/main/java/org/bukkit/entity/Wolf.java
648+
+++ b/src/main/java/org/bukkit/entity/Wolf.java
649+
@@ -39,4 +39,22 @@ public interface Wolf extends Tameable, Sittable {
650+
* @param color the color to apply
651+
*/
652+
public void setCollarColor(@NotNull DyeColor color);
653+
+
654+
+ // Paper start
655+
+ /**
656+
+ * Sets if the wolf is interested.
657+
+ * <p>
658+
+ * This causes the wolf to tilt its head to the side.
659+
+ *
660+
+ * @param interested is interested
661+
+ */
662+
+ void setInterested(boolean interested);
663+
+
664+
+ /**
665+
+ * Gets if the wolf is interested.
666+
+ *
667+
+ * @return is interested
668+
+ */
669+
+ boolean isInterested();
670+
+ // Paper end
671+
}

patches/server/0676-Missing-Entity-Behavior-API.patch

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,24 @@ Subject: [PATCH] Missing Entity Behavior API
66
Co-authored-by: Nassim Jahnke <jahnke.nassim@gmail.com>
77
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
88

9+
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
10+
index c49e7ea3e2efc4459f5ed1d4ebd83c9d23420611..79a9fa2a2257925685e45329365d2828ccd4c48c 100644
11+
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
12+
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
13+
@@ -539,11 +539,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
14+
this.setFlag(4, hasStung);
15+
}
16+
17+
+ public net.kyori.adventure.util.TriState rollingOverride = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Rolling override
18+
public boolean isRolling() {
19+
return this.getFlag(2);
20+
}
21+
22+
public void setRolling(boolean nearTarget) {
23+
+ nearTarget = rollingOverride.toBooleanOrElse(nearTarget); // Paper - Rolling override
24+
this.setFlag(2, nearTarget);
25+
}
26+
927
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
1028
index cd278a859c87fc89c421378ffab1bd36a45bd65d..a726006888bbbdb290bcda3ac4fd45d68ba51b79 100644
1129
--- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
@@ -166,6 +184,33 @@ index 254d4f2e45d7c8f572a4368eccd84560d4d0d836..299ab868252c8f326e3a56e878c9ee23
166184
+ }
167185
+ // Paper end - Horse API
168186
}
187+
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java
188+
index 8ada3dfbe89c8b55d85c31c71e365af0cbf66d19..b5d3a00a48d3b7618f974bb0f6909aa7c304b012 100644
189+
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java
190+
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java
191+
@@ -91,4 +91,22 @@ public class CraftBee extends CraftAnimals implements Bee {
192+
public void setCannotEnterHiveTicks(int ticks) {
193+
this.getHandle().setStayOutOfHiveCountdown(ticks);
194+
}
195+
+ // Paper start
196+
+ @Override
197+
+ public void setRollingOverride(net.kyori.adventure.util.TriState rolling) {
198+
+ this.getHandle().rollingOverride = rolling;
199+
+
200+
+ this.getHandle().setRolling(this.getHandle().isRolling()); // Refresh rolling state
201+
+ }
202+
+
203+
+ @Override
204+
+ public boolean isRolling() {
205+
+ return this.getRollingOverride().toBooleanOrElse(this.getHandle().isRolling());
206+
+ }
207+
+
208+
+ @Override
209+
+ public net.kyori.adventure.util.TriState getRollingOverride() {
210+
+ return this.getHandle().rollingOverride;
211+
+ }
212+
+ // Paper end
213+
}
169214
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java
170215
index a4f909123de26d911aea7cd767d2315ed1f697c9..0eee53c068bca070a86645d0ba54fb1ad49a6a5b 100644
171216
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java
@@ -393,6 +438,26 @@ index 2d2620dbb16aec850e8afda02174508a4be5a313..ba4e6deaaa725296be830324d2c64868
393438

394439
public static Gene fromNms(net.minecraft.world.entity.animal.Panda.Gene gene) {
395440
Preconditions.checkArgument(gene != null, "Gene may not be null");
441+
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java
442+
index aeda5fc001fe4ce55ee467240b275b6050a29f98..48d0a4e42e1b90d1323784d1284acabfe9497dd6 100644
443+
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java
444+
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java
445+
@@ -90,4 +90,15 @@ public class CraftPiglin extends CraftPiglinAbstract implements Piglin, com.dest
446+
public String toString() {
447+
return "CraftPiglin";
448+
}
449+
+ // Paper start
450+
+ @Override
451+
+ public void setChargingCrossbow(boolean chargingCrossbow) {
452+
+ this.getHandle().setChargingCrossbow(chargingCrossbow);
453+
+ }
454+
+
455+
+ @Override
456+
+ public boolean isChargingCrossbow() {
457+
+ return this.getHandle().isChargingCrossbow();
458+
+ }
459+
+ // Paper end
460+
}
396461
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java
397462
index da1488c9cae53bd554727c850da2192adda2478a..30a0eac179c86b0fe94a2a40b5bfcd3eee01e53b 100644
398463
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java
@@ -467,6 +532,37 @@ index bf5b2fd6676c4430578db4cc6c603c501cc5e349..832981b07ef5c633ef00a382f56798ee
467532
+ }
468533
+ // Paper end
469534
}
535+
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java
536+
index 0f5c81c0d599d3b58f7864d1527391ad50983c4e..606d8485a5fc67b59f8fed38a739d6bc5888d99d 100644
537+
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java
538+
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java
539+
@@ -26,6 +26,26 @@ public class CraftVex extends CraftMonster implements Vex {
540+
public void setSummoner(org.bukkit.entity.Mob summoner) {
541+
getHandle().setOwner(summoner == null ? null : ((CraftMob) summoner).getHandle());
542+
}
543+
+
544+
+ @Override
545+
+ public boolean hasLimitedLifetime() {
546+
+ return this.getHandle().hasLimitedLife;
547+
+ }
548+
+
549+
+ @Override
550+
+ public void setLimitedLifetime(boolean hasLimitedLifetime) {
551+
+ this.getHandle().hasLimitedLife = hasLimitedLifetime;
552+
+ }
553+
+
554+
+ @Override
555+
+ public int getLimitedLifetimeTicks() {
556+
+ return this.getHandle().limitedLifeTicks;
557+
+ }
558+
+
559+
+ @Override
560+
+ public void setLimitedLifetimeTicks(int ticks) {
561+
+ this.getHandle().limitedLifeTicks = ticks;
562+
+ }
563+
// Paper end
564+
565+
@Override
470566
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
471567
index 640b0860fbe3412da32d03187e6f355ba8f099ea..299d5e47489cfe489ac130a33a08cdb29ba76d72 100644
472568
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
@@ -503,3 +599,23 @@ index 640b0860fbe3412da32d03187e6f355ba8f099ea..299d5e47489cfe489ac130a33a08cdb2
503599
+ }
504600
+ // Paper end
505601
}
602+
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
603+
index f856b42201c17f8da21251e54fcf052336916e70..a3bec00368aef0f8cc6aa21cce1389938d15f91b 100644
604+
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
605+
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
606+
@@ -43,4 +43,15 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf {
607+
public void setCollarColor(DyeColor color) {
608+
this.getHandle().setCollarColor(net.minecraft.world.item.DyeColor.byId(color.getWoolData()));
609+
}
610+
+ // Paper start
611+
+ @Override
612+
+ public void setInterested(boolean interested) {
613+
+ this.getHandle().setIsInterested(interested);
614+
+ }
615+
+
616+
+ @Override
617+
+ public boolean isInterested() {
618+
+ return this.getHandle().isInterested();
619+
+ }
620+
+ // Paper end
621+
}

0 commit comments

Comments
 (0)