diff --git a/patches/server/0297-Stored-Bee-API.patch b/patches/server/0297-Stored-Bee-API.patch index 26c594b17..e61b1bb27 100644 --- a/patches/server/0297-Stored-Bee-API.patch +++ b/patches/server/0297-Stored-Bee-API.patch @@ -5,28 +5,31 @@ Subject: [PATCH] Stored Bee API diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 7b82842b97ce795745cf6ee6399f618c55acbbf3..5344393f62af19c3591f54a6ebc40b2e4c3b6226 100644 +index 7b82842b97ce795745cf6ee6399f618c55acbbf3..82bdd430f1640e44d25af54354bba27b190fa1ba 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -130,6 +130,36 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -117,10 +117,15 @@ public class BeehiveBlockEntity extends BlockEntity { + } + + public List releaseBees(BlockState iblockdata, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, boolean force) { ++ // Purpur start ++ return this.releaseBees(iblockdata, this.level, tileentitybeehive_releasestatus, force); ++ } ++ public List releaseBees(BlockState iblockdata, Level level, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, boolean force) { ++ // Purpur end + List list = Lists.newArrayList(); + + this.stored.removeIf((tileentitybeehive_hivebee) -> { +- return BeehiveBlockEntity.releaseBee(this.level, this.worldPosition, iblockdata, tileentitybeehive_hivebee, list, tileentitybeehive_releasestatus, this.savedFlowerPos, force); ++ return BeehiveBlockEntity.releaseBee(level, this.worldPosition, iblockdata, tileentitybeehive_hivebee, list, tileentitybeehive_releasestatus, this.savedFlowerPos, force); // Purpur + // CraftBukkit end + }); + if (!list.isEmpty()) { +@@ -130,6 +135,22 @@ public class BeehiveBlockEntity extends BlockEntity { return list; } + // Purpur start -+ public List releaseBees(BlockState iblockdata, Level level, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, boolean force) { -+ List list = Lists.newArrayList(); -+ -+ this.stored.removeIf((tileentitybeehive_hivebee) -> { -+ return BeehiveBlockEntity.releaseBee(level, this.worldPosition, iblockdata, tileentitybeehive_hivebee, list, tileentitybeehive_releasestatus, this.savedFlowerPos, force); -+ }); -+ -+ if (!list.isEmpty()) { -+ super.setChanged(); -+ } -+ -+ return list; -+ } -+ + public List releaseBee(BlockState iblockdata, Level level, BeeData data, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, boolean force) { + List list = Lists.newArrayList(); + @@ -45,7 +48,7 @@ index 7b82842b97ce795745cf6ee6399f618c55acbbf3..5344393f62af19c3591f54a6ebc40b2e public void addOccupant(Entity entity, boolean hasNectar) { this.addOccupantWithPresetTicks(entity, hasNectar, 0); } -@@ -139,6 +169,12 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -139,6 +160,12 @@ public class BeehiveBlockEntity extends BlockEntity { return this.stored.size(); } @@ -58,7 +61,7 @@ index 7b82842b97ce795745cf6ee6399f618c55acbbf3..5344393f62af19c3591f54a6ebc40b2e // Paper start - Add EntityBlockStorage clearEntities public void clearBees() { this.stored.clear(); -@@ -425,9 +461,9 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -425,9 +452,9 @@ public class BeehiveBlockEntity extends BlockEntity { private BeeReleaseStatus() {} } @@ -71,7 +74,7 @@ index 7b82842b97ce795745cf6ee6399f618c55acbbf3..5344393f62af19c3591f54a6ebc40b2e int exitTickCounter; // Paper - separate counter for checking if bee should exit to reduce exit attempts final int minOccupationTicks; diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java -index 380897c010521f368848a3e6986d307cf47ff319..3c5eae31dc229b8c5f15215be9462410bcb41f07 100644 +index 380897c010521f368848a3e6986d307cf47ff319..eed465160220f0e080ff3f9fa26be790a1cb65bb 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java @@ -16,8 +16,15 @@ import org.bukkit.entity.Bee; @@ -98,8 +101,8 @@ index 380897c010521f368848a3e6986d307cf47ff319..3c5eae31dc229b8c5f15215be9462410 - for (Entity bee : beehive.releaseBees(this.getHandle(), BeeReleaseStatus.BEE_RELEASED, true)) { + // Purpur start - change which releaseBees method is called, and use beehive snapshot + BeehiveBlockEntity beehive = ((BeehiveBlockEntity) this.getSnapshot()); -+ for (Entity bee : beehive.releaseBees(this.getHandle(), getWorldHandle().getMinecraftWorld(), BeeReleaseStatus.BEE_RELEASED, true)) { -+ // Purpur end ++ for (Entity bee : beehive.releaseBees(this.getHandle(), world.getHandle(), BeeReleaseStatus.BEE_RELEASED, true)) { ++ // Purpur end bees.add((Bee) bee.getBukkitEntity()); } }