Skip to content
This repository was archived by the owner on Feb 25, 2026. It is now read-only.

Commit 4ffbc49

Browse files
committed
Failsafe cleanup
1 parent 7b1b71d commit 4ffbc49

29 files changed

Lines changed: 355 additions & 265 deletions

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ baseGroup=com.jelly.farmhelperv2
44
mcVersion=1.8.9
55
modid=farmhelperv2
66
modName=FarmHelper
7-
version=2.9.6
8-
shouldRelease=true
7+
version=2.9.7-pre3
8+
shouldRelease=false

src/main/java/com/jelly/farmhelperv2/FarmHelper.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ public void init(FMLInitializationEvent event) {
6464
initializeFields();
6565
initializeListeners();
6666
initializeCommands();
67-
initializeFailsafeServer();
6867
FeatureManager.getInstance().fillFeatures().forEach(MinecraftForge.EVENT_BUS::register);
6968

7069
mc.gameSettings.pauseOnLostFocus = false;
@@ -206,25 +205,6 @@ private void initializeCommands() {
206205
CommandManager.register(new FarmHelperMainCommand());
207206
}
208207

209-
public void initializeFailsafeServer() {
210-
ExecutorService networkExecutor = Executors.newSingleThreadExecutor();
211-
LogUtils.sendDebug("Trying to connect to failsafe server");
212-
networkExecutor.submit(() -> {
213-
try {
214-
String response = NetworkUtils.requestFailsafe(
215-
"test",
216-
"{\"test\": \"%s\"}",
217-
"test"
218-
);
219-
mc.addScheduledTask(() -> {
220-
NetworkUtils.performFailsafeResponse(FailsafeNotificationsPage.notifyOnTeleportationFailsafe, response);
221-
});
222-
} catch (Exception e) {
223-
e.printStackTrace();
224-
}
225-
});
226-
}
227-
228208
public static boolean isJDAVersionCorrect = false;
229209

230210
public static boolean checkIfJDAVersionCorrect() {

src/main/java/com/jelly/farmhelperv2/config/FarmHelperConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ public class FarmHelperConfig extends Config {
542542
LogUtils.sendError("You can't test this failsafe because it requires specific conditions to trigger!");
543543
return;
544544
}
545-
FailsafeManager.getInstance().possibleDetection(testingFailsafe);
545+
FailsafeManager.getInstance().addPossibleDetection(testingFailsafe);
546546
};
547547

548548
@Dropdown(name = "Test Failsafe Type", category = FAILSAFE, subcategory = "Testing",

src/main/java/com/jelly/farmhelperv2/failsafe/Failsafe.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void onDisconnectDetection(FMLNetworkEvent.ClientDisconnectionFromServerE
4646
public abstract void endOfFailsafeTrigger();
4747

4848
private void possibleDetectionOfCheck() {
49-
FailsafeManager.getInstance().possibleDetection(this);
49+
FailsafeManager.getInstance().addPossibleDetection(this);
5050
}
5151

5252
public void resetStates() {

src/main/java/com/jelly/farmhelperv2/failsafe/FailsafeManager.java

Lines changed: 152 additions & 124 deletions
Large diffs are not rendered by default.

src/main/java/com/jelly/farmhelperv2/failsafe/impl/BadEffectsFailsafe.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.jelly.farmhelperv2.handler.MacroHandler;
1313
import com.jelly.farmhelperv2.handler.RotationHandler;
1414
import com.jelly.farmhelperv2.util.AngleUtils;
15+
import com.jelly.farmhelperv2.util.FailsafeUtils;
1516
import com.jelly.farmhelperv2.util.LogUtils;
1617
import com.jelly.farmhelperv2.util.helper.Rotation;
1718
import com.jelly.farmhelperv2.util.helper.RotationConfiguration;
@@ -60,12 +61,12 @@ public boolean shouldAltTab() {
6061
}
6162
@Override
6263
public void onTickDetection(TickEvent.ClientTickEvent event) {
63-
if (FailsafeManager.getInstance().isHadEmergency())
64+
if (FailsafeManager.getInstance().isHavingEmergency())
6465
return;
6566
if (FeatureManager.getInstance().shouldPauseMacroExecution())
6667
return;
6768
if (hasNegativeEffect()) {
68-
FailsafeManager.getInstance().possibleDetection(this);
69+
FailsafeManager.getInstance().addPossibleDetection(this);
6970
}
7071
}
7172

@@ -141,12 +142,12 @@ public void duringFailsafeTrigger() {
141142
&& GameStateHandler.getInstance().inJacobContest()
142143
&& Math.random() > CustomFailsafeMessagesPage.customJacobChance / 100.0) {
143144
String[] customJacobMessages = CustomFailsafeMessagesPage.customJacobMessages.split("\\|");
144-
randomMessage = FailsafeManager.getRandomMessage(customJacobMessages);
145+
randomMessage = FailsafeUtils.getRandomMessage(customJacobMessages);
145146
} else if (CustomFailsafeMessagesPage.customRotationMessages.isEmpty()) {
146-
randomMessage = FailsafeManager.getRandomMessage();
147+
randomMessage = FailsafeUtils.getRandomMessage();
147148
} else {
148149
String[] customMessages = CustomFailsafeMessagesPage.customRotationMessages.split("\\|");
149-
randomMessage = FailsafeManager.getRandomMessage(customMessages);
150+
randomMessage = FailsafeUtils.getRandomMessage(customMessages);
150151
}
151152
badEffectsState = BadEffectsState.SEND_MESSAGE;
152153
FailsafeManager.getInstance().scheduleRandomDelay(randomMessage.length() * 150L, 1000);
@@ -188,10 +189,10 @@ public void duringFailsafeTrigger() {
188189
break;
189190
}
190191
if (CustomFailsafeMessagesPage.customContinueMessages.isEmpty()) {
191-
randomContinueMessage = FailsafeManager.getRandomContinueMessage();
192+
randomContinueMessage = FailsafeUtils.getRandomContinueMessage();
192193
} else {
193194
String[] customContinueMessages = CustomFailsafeMessagesPage.customContinueMessages.split("\\|");
194-
randomContinueMessage = FailsafeManager.getRandomMessage(customContinueMessages);
195+
randomContinueMessage = FailsafeUtils.getRandomMessage(customContinueMessages);
195196
}
196197
badEffectsState = BadEffectsState.SEND_MESSAGE_2;
197198
FailsafeManager.getInstance().scheduleRandomDelay(randomContinueMessage.length() * 150L, 1000);

src/main/java/com/jelly/farmhelperv2/failsafe/impl/BanwaveFailsafe.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public void duringFailsafeTrigger() {
9393
public void endOfFailsafeTrigger() {
9494
LogUtils.sendFailsafeMessage("[Failsafe] Resuming the macro because banwave is over!", false);
9595
FailsafeManager.getInstance().stopFailsafes();
96-
FailsafeManager.getInstance().setHadEmergency(false);
96+
FailsafeManager.getInstance().setHavingEmergency(false);
9797
MacroHandler.getInstance().resumeMacro();
9898
}
9999

@@ -105,6 +105,6 @@ public void onReceivedPacketDetection(ReceivePacketEvent event) {
105105
if (FarmHelperConfig.banwaveDontLeaveDuringJacobsContest && GameStateHandler.getInstance().inJacobContest())
106106
return;
107107
if (!MacroHandler.getInstance().getMacro().isEnabledAndNoFeature()) return;
108-
FailsafeManager.getInstance().possibleDetection(this);
108+
FailsafeManager.getInstance().addPossibleDetection(this);
109109
}
110110
}

src/main/java/com/jelly/farmhelperv2/failsafe/impl/BedrockCageFailsafe.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@
1111
import com.jelly.farmhelperv2.handler.GameStateHandler;
1212
import com.jelly.farmhelperv2.handler.MacroHandler;
1313
import com.jelly.farmhelperv2.handler.RotationHandler;
14-
import com.jelly.farmhelperv2.util.AngleUtils;
15-
import com.jelly.farmhelperv2.util.BlockUtils;
16-
import com.jelly.farmhelperv2.util.LogUtils;
17-
import com.jelly.farmhelperv2.util.PlayerUtils;
14+
import com.jelly.farmhelperv2.util.*;
1815
import com.jelly.farmhelperv2.util.helper.Rotation;
1916
import com.jelly.farmhelperv2.util.helper.RotationConfiguration;
2017
import net.minecraft.init.Blocks;
@@ -81,7 +78,7 @@ public void onReceivedPacketDetection(ReceivePacketEvent event) {
8178
return;
8279
}
8380
if (BlockUtils.bedrockCount() > 3) {
84-
FailsafeManager.getInstance().possibleDetection(this);
81+
FailsafeManager.getInstance().addPossibleDetection(this);
8582
return;
8683
}
8784
try {
@@ -125,7 +122,7 @@ public void duringFailsafeTrigger() {
125122
PlayerUtils.closeScreen();
126123
// just in case something in the hand keeps opening the screen
127124
if (FailsafeManager.getInstance().swapItemDuringRecording && mc.thePlayer.inventory.currentItem > 1)
128-
FailsafeManager.getInstance().selectNextItemSlot();
125+
InventoryUtils.selectNextItemSlot();
129126
return;
130127
}
131128
switch (bedrockCageCheckState) {
@@ -162,12 +159,12 @@ else if (BlockUtils.getRelativeBlock(1, 1, 0).equals(Blocks.bedrock))
162159
&& GameStateHandler.getInstance().inJacobContest()
163160
&& Math.random() > CustomFailsafeMessagesPage.customJacobChance / 100.0) {
164161
String[] customJacobMessages = CustomFailsafeMessagesPage.customJacobMessages.split("\\|");
165-
randomMessage = FailsafeManager.getRandomMessage(customJacobMessages);
162+
randomMessage = FailsafeUtils.getRandomMessage(customJacobMessages);
166163
} else if (CustomFailsafeMessagesPage.customBedrockMessages.isEmpty()) {
167-
randomMessage = FailsafeManager.getRandomMessage();
164+
randomMessage = FailsafeUtils.getRandomMessage();
168165
} else {
169166
String[] customMessages = CustomFailsafeMessagesPage.customBedrockMessages.split("\\|");
170-
randomMessage = FailsafeManager.getRandomMessage(customMessages);
167+
randomMessage = FailsafeUtils.getRandomMessage(customMessages);
171168
}
172169
bedrockCageCheckState = BedrockCageCheckState.SEND_MESSAGE_1;
173170
FailsafeManager.getInstance().scheduleRandomDelay(randomMessage.length() * 150L, 1000);
@@ -204,10 +201,10 @@ else if (BlockUtils.getRelativeBlock(1, 1, 0).equals(Blocks.bedrock))
204201
break;
205202
}
206203
if (CustomFailsafeMessagesPage.customContinueMessages.isEmpty()) {
207-
randomContinueMessage = FailsafeManager.getRandomContinueMessage();
204+
randomContinueMessage = FailsafeUtils.getRandomContinueMessage();
208205
} else {
209206
String[] customContinueMessages = CustomFailsafeMessagesPage.customContinueMessages.split("\\|");
210-
randomContinueMessage = FailsafeManager.getRandomMessage(customContinueMessages);
207+
randomContinueMessage = FailsafeUtils.getRandomMessage(customContinueMessages);
211208
}
212209
bedrockCageCheckState = BedrockCageCheckState.SEND_MESSAGE_2;
213210
FailsafeManager.getInstance().scheduleRandomDelay(randomContinueMessage.length() * 150L, 1000);

src/main/java/com/jelly/farmhelperv2/failsafe/impl/CobwebFailsafe.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.jelly.farmhelperv2.handler.MacroHandler;
1313
import com.jelly.farmhelperv2.handler.RotationHandler;
1414
import com.jelly.farmhelperv2.util.AngleUtils;
15+
import com.jelly.farmhelperv2.util.FailsafeUtils;
1516
import com.jelly.farmhelperv2.util.LogUtils;
1617
import com.jelly.farmhelperv2.util.helper.Rotation;
1718
import com.jelly.farmhelperv2.util.helper.RotationConfiguration;
@@ -98,12 +99,12 @@ public void duringFailsafeTrigger() {
9899
&& GameStateHandler.getInstance().inJacobContest()
99100
&& Math.random() > CustomFailsafeMessagesPage.customJacobChance / 100.0) {
100101
String[] customJacobMessages = CustomFailsafeMessagesPage.customJacobMessages.split("\\|");
101-
randomMessage = FailsafeManager.getRandomMessage(customJacobMessages);
102+
randomMessage = FailsafeUtils.getRandomMessage(customJacobMessages);
102103
} else if (CustomFailsafeMessagesPage.customRotationMessages.isEmpty()) {
103-
randomMessage = FailsafeManager.getRandomMessage();
104+
randomMessage = FailsafeUtils.getRandomMessage();
104105
} else {
105106
String[] customMessages = CustomFailsafeMessagesPage.customRotationMessages.split("\\|");
106-
randomMessage = FailsafeManager.getRandomMessage(customMessages);
107+
randomMessage = FailsafeUtils.getRandomMessage(customMessages);
107108
}
108109
cobwebCheckState = CobwebCheckState.SEND_MESSAGE;
109110
FailsafeManager.getInstance().scheduleRandomDelay(randomMessage.length() * 150L, 1000);
@@ -142,10 +143,10 @@ public void duringFailsafeTrigger() {
142143
break;
143144
}
144145
if (CustomFailsafeMessagesPage.customContinueMessages.isEmpty()) {
145-
randomContinueMessage = FailsafeManager.getRandomContinueMessage();
146+
randomContinueMessage = FailsafeUtils.getRandomContinueMessage();
146147
} else {
147148
String[] customContinueMessages = CustomFailsafeMessagesPage.customContinueMessages.split("\\|");
148-
randomContinueMessage = FailsafeManager.getRandomMessage(customContinueMessages);
149+
randomContinueMessage = FailsafeUtils.getRandomMessage(customContinueMessages);
149150
}
150151
cobwebCheckState = CobwebCheckState.SEND_MESSAGE_2;
151152
FailsafeManager.getInstance().scheduleRandomDelay(randomContinueMessage.length() * 150L, 1000);

src/main/java/com/jelly/farmhelperv2/failsafe/impl/DirtFailsafe.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.jelly.farmhelperv2.event.BlockChangeEvent;
77
import com.jelly.farmhelperv2.failsafe.Failsafe;
88
import com.jelly.farmhelperv2.failsafe.FailsafeManager;
9+
import com.jelly.farmhelperv2.feature.FeatureManager;
910
import com.jelly.farmhelperv2.feature.impl.LagDetector;
1011
import com.jelly.farmhelperv2.feature.impl.MovRecPlayer;
1112
import com.jelly.farmhelperv2.handler.BaritoneHandler;
@@ -64,7 +65,11 @@ public boolean shouldAltTab() {
6465

6566
@Override
6667
public void onBlockChange(BlockChangeEvent event) {
67-
if (FailsafeManager.getInstance().firstCheckReturn()) return;
68+
if (mc.thePlayer == null || mc.theWorld == null) return;
69+
if (!MacroHandler.getInstance().isMacroToggled()) return;
70+
if (FailsafeManager.getInstance().triggeredFailsafe.isPresent()) return;
71+
if (FeatureManager.getInstance().shouldIgnoreFalseCheck()) return;
72+
6873
if (event.update.getBlock().equals(Blocks.air) && !CropUtils.isCrop(event.old.getBlock())) {
6974
LogUtils.sendDebug("[Failsafe] Block destroyed: " + event.pos);
7075
blocksDestroyedByPlayer.add(new Tuple<>(event.pos, System.currentTimeMillis()));
@@ -95,7 +100,7 @@ public void duringFailsafeTrigger() {
95100
PlayerUtils.closeScreen();
96101
// just in case something in the hand keeps opening the screen
97102
if (FailsafeManager.getInstance().swapItemDuringRecording && mc.thePlayer.inventory.currentItem > 1)
98-
FailsafeManager.getInstance().selectNextItemSlot();
103+
InventoryUtils.selectNextItemSlot();
99104
return;
100105
}
101106
switch (dirtCheckState) {
@@ -142,12 +147,12 @@ else if (BlockUtils.getRelativeBlock(1, 1, 0).equals(Blocks.dirt))
142147
&& GameStateHandler.getInstance().inJacobContest()
143148
&& Math.random() > CustomFailsafeMessagesPage.customJacobChance / 100.0) {
144149
String[] customJacobMessages = CustomFailsafeMessagesPage.customJacobMessages.split("\\|");
145-
randomMessage = FailsafeManager.getRandomMessage(customJacobMessages);
150+
randomMessage = FailsafeUtils.getRandomMessage(customJacobMessages);
146151
} else if (CustomFailsafeMessagesPage.customDirtMessages.isEmpty()) {
147-
randomMessage = FailsafeManager.getRandomMessage();
152+
randomMessage = FailsafeUtils.getRandomMessage();
148153
} else {
149154
String[] customMessages = CustomFailsafeMessagesPage.customDirtMessages.split("\\|");
150-
randomMessage = FailsafeManager.getRandomMessage(customMessages);
155+
randomMessage = FailsafeUtils.getRandomMessage(customMessages);
151156
}
152157
dirtCheckState = DirtCheckState.SEND_MESSAGE;
153158
FailsafeManager.getInstance().scheduleRandomDelay(randomMessage.length() * 150L, 1000);

0 commit comments

Comments
 (0)