aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0964-Fix-bees-aging-inside-hives.patch
blob: ae6a0ff63d097b19c7d4313a83be994b7cf7b11a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Sat, 21 Aug 2021 21:54:16 -0700
Subject: [PATCH] Fix bees aging inside hives

Fixes bees incorrectly being aged up due to upstream's
resetting the ticks inside hive on a failed release

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 6fb7ec36f6f7a3021fac4b9e31fd333dfd5ea5e5..7b263fab4f0014400b3b8e7e33db32f9a125f6ba 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
@@ -314,7 +314,7 @@ public class BeehiveBlockEntity extends BlockEntity {
                     iterator.remove();
                     // CraftBukkit start
                 } else {
-                    tileentitybeehive_hivebee.ticksInHive = tileentitybeehive_hivebee.occupant.minTicksInHive / 2; // Not strictly Vanilla behaviour in cases where bees cannot spawn but still reasonable
+                    tileentitybeehive_hivebee.exitTickCounter = tileentitybeehive_hivebee.occupant.minTicksInHive / 2; // Not strictly Vanilla behaviour in cases where bees cannot spawn but still reasonable // Paper - Fix bees aging inside hives; use exitTickCounter to keep actual bee life
                     // CraftBukkit end
                 }
             }
@@ -474,15 +474,18 @@ public class BeehiveBlockEntity extends BlockEntity {
     private static class BeeData {
 
         private final BeehiveBlockEntity.Occupant occupant;
+        private int exitTickCounter; // Paper - Fix bees aging inside hives; separate counter for checking if bee should exit to reduce exit attempts
         private int ticksInHive;
 
         BeeData(BeehiveBlockEntity.Occupant data) {
             this.occupant = data;
             this.ticksInHive = data.ticksInHive();
+            this.exitTickCounter = this.ticksInHive; // Paper - Fix bees aging inside hives
         }
 
         public boolean tick() {
-            return this.ticksInHive++ > this.occupant.minTicksInHive;
+            this.ticksInHive++; // Paper - Fix bees aging inside hives
+            return this.exitTickCounter++ > this.occupant.minTicksInHive; // Paper - Fix bees aging inside hives
         }
 
         public BeehiveBlockEntity.Occupant toOccupant() {