Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-18 12:30:06 +01:00
51 Zeilen
2.6 KiB
Diff
51 Zeilen
2.6 KiB
Diff
--- a/net/minecraft/server/TileEntityBeehive.java
|
|
+++ b/net/minecraft/server/TileEntityBeehive.java
|
|
@@ -108,6 +108,18 @@
|
|
|
|
public void a(Entity entity, boolean flag, int i) {
|
|
if (this.bees.size() < 3) {
|
|
+ // CraftBukkit start
|
|
+ if (this.world != null) {
|
|
+ org.bukkit.event.entity.EntityEnterBlockEvent event = new org.bukkit.event.entity.EntityEnterBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, getPosition()));
|
|
+ org.bukkit.Bukkit.getPluginManager().callEvent(event);
|
|
+ if (event.isCancelled()) {
|
|
+ if (entity instanceof EntityBee) {
|
|
+ ((EntityBee) entity).setCannotEnterHiveTicks(400);
|
|
+ }
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ // CraftBukkit end
|
|
entity.stopRiding();
|
|
entity.ejectPassengers();
|
|
NBTTagCompound nbttagcompound = new NBTTagCompound();
|
|
@@ -163,6 +175,7 @@
|
|
if (!entity.getEntityType().a(TagsEntity.BEEHIVE_INHABITORS)) {
|
|
return false;
|
|
} else {
|
|
+ if (!this.world.addEntity(entity, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BEEHIVE)) return false; // CraftBukkit - SpawnReason, moved from below
|
|
if (entity instanceof EntityBee) {
|
|
EntityBee entitybee = (EntityBee) entity;
|
|
|
|
@@ -196,7 +209,7 @@
|
|
BlockPosition blockposition2 = this.getPosition();
|
|
|
|
this.world.playSound((EntityHuman) null, (double) blockposition2.getX(), (double) blockposition2.getY(), (double) blockposition2.getZ(), SoundEffects.BLOCK_BEEHIVE_EXIT, SoundCategory.BLOCKS, 1.0F, 1.0F);
|
|
- return this.world.addEntity(entity);
|
|
+ return true; // return this.world.addEntity(entity); // CraftBukkit - moved up
|
|
}
|
|
} else {
|
|
return false;
|
|
@@ -223,6 +236,11 @@
|
|
if (this.a(iblockdata, nbttagcompound, (List) null, tileentitybeehive_releasestatus)) {
|
|
iterator.remove();
|
|
}
|
|
+ // CraftBukkit start
|
|
+ else {
|
|
+ tileentitybeehive_hivebee.ticksInHive = tileentitybeehive_hivebee.minOccupationTicks / 2; // Not strictly Vanilla behaviour in cases where bees cannot spawn but still reasonable
|
|
+ }
|
|
+ // CraftBukkit end
|
|
} else {
|
|
tileentitybeehive_hivebee.ticksInHive++;
|
|
}
|