From cd7d5f10e6c27ea379ccd92c2ea520cfa5fb3734 Mon Sep 17 00:00:00 2001 From: mezz Date: Sun, 17 May 2015 01:30:59 -0700 Subject: [PATCH] #666 Fix performance regression from checking for flowers constantly --- .../forestry/apiculture/BeekeepingLogic.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/java/forestry/apiculture/BeekeepingLogic.java b/src/main/java/forestry/apiculture/BeekeepingLogic.java index 3979a7aa3..48830daf8 100755 --- a/src/main/java/forestry/apiculture/BeekeepingLogic.java +++ b/src/main/java/forestry/apiculture/BeekeepingLogic.java @@ -154,6 +154,22 @@ public class BeekeepingLogic implements IBeekeepingLogic { if (queenWorkCycleThrottle >= PluginApiculture.ticksPerBeeWorkCycle) { queenWorkCycleThrottle = 0; + boolean hasFlower = queen.hasFlower(housing); + + if (housingSupportsMultipleErrorStates) { + housing.setErrorCondition(!hasFlower, EnumErrorCode.NOFLOWER); + } else { + if (hasFlower) { + housing.setErrorState(EnumErrorCode.OK); + } else { + housing.setErrorState(EnumErrorCode.NOFLOWER); + } + } + + if (!hasFlower) { + return; + } + doProduction(); queen.plantFlowerRandom(housing); doPollination(); @@ -278,7 +294,6 @@ public class BeekeepingLogic implements IBeekeepingLogic { } private boolean queenCanWork() { - boolean hasFlower = queen.hasFlower(housing); if (housingSupportsMultipleErrorStates) { try { @@ -287,9 +302,7 @@ public class BeekeepingLogic implements IBeekeepingLogic { housing.setErrorCondition(true, errorState); } - housing.setErrorCondition(!hasFlower, EnumErrorCode.NOFLOWER); - - return (errorStates.size() == 0) && hasFlower; + return (errorStates.size() == 0); } catch (Throwable ignored) { // queen might not support getCanWork(housing) } @@ -301,13 +314,6 @@ public class BeekeepingLogic implements IBeekeepingLogic { return false; } - if (hasFlower) { - housing.setErrorState(EnumErrorCode.OK); - } else { - housing.setErrorState(EnumErrorCode.NOFLOWER); - return false; - } - return true; }