SPIGOT-6224: EntityBreedEvent getEntity location inaccuracy

By: Martoph <sager1018@gmail.com>
This commit is contained in:
CraftBukkit/Spigot
2021-05-11 18:33:28 +10:00
parent c3777ce7e7
commit dfc592aec5
3 changed files with 27 additions and 20 deletions

View File

@@ -1,22 +1,21 @@
--- a/net/minecraft/world/entity/ai/behavior/BehaviorMakeLove.java
+++ b/net/minecraft/world/entity/ai/behavior/BehaviorMakeLove.java
@@ -106,6 +106,11 @@
private Optional<EntityVillager> b(WorldServer worldserver, EntityVillager entityvillager, EntityVillager entityvillager1) {
EntityVillager entityvillager2 = entityvillager.createChild(worldserver, entityvillager1);
+ // CraftBukkit start - call EntityBreedEvent
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityvillager2, entityvillager, entityvillager1, null, null, 0).isCancelled()) {
+ return Optional.empty();
+ }
+ // CraftBukkit end
@@ -110,11 +110,16 @@
if (entityvillager2 == null) {
return Optional.empty();
@@ -114,7 +119,7 @@
entityvillager1.setAgeRaw(6000);
} else {
- entityvillager.setAgeRaw(6000);
- entityvillager1.setAgeRaw(6000);
+ // CraftBukkit start - call EntityBreedEvent
entityvillager2.setAgeRaw(-24000);
entityvillager2.setPositionRotation(entityvillager.locX(), entityvillager.locY(), entityvillager.locZ(), 0.0F, 0.0F);
- worldserver.addAllEntities(entityvillager2);
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityvillager2, entityvillager, entityvillager1, null, null, 0).isCancelled()) {
+ return Optional.empty();
+ }
+ // CraftBukkit end
+ entityvillager.setAgeRaw(6000);
+ entityvillager1.setAgeRaw(6000);
+ worldserver.addAllEntities(entityvillager2, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason
worldserver.broadcastEntityEffect(entityvillager2, (byte) 12);
return Optional.of(entityvillager2);