aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author alemi <me@alemi.dev>2023-03-08 17:22:00 +0100
committer alemi <me@alemi.dev>2023-03-08 17:22:00 +0100
commit7a6102dfbfbf8254b5beb14c4d1dd049a18ef1d4 (patch)
treeab1c957848a1b8217a32414d253d10cb73db6612
parent1a189e9c8aeb5a6ee72b1385d1ac96220941fba1 (diff)
fix: settings getting corrupted on load
bear with me: issue likely was that all mods were enabled and saved concurrently while being loaded, messing up with config. Ok, must run callbacks and register mod but not touch config file. Solved by removing onEnabled/onDisabled callbacks, making mods directly override enable/disable. Made the implementations in AbstractModule check this.enabled before acting on config.
-rw-r--r--src/main/java/ftbsc/bscv/Boscovicino.java4
-rw-r--r--src/main/java/ftbsc/bscv/api/IModule.java12
-rw-r--r--src/main/java/ftbsc/bscv/modules/AbstractModule.java30
-rw-r--r--src/main/java/ftbsc/bscv/modules/defense/Aura.java3
-rw-r--r--src/main/java/ftbsc/bscv/modules/hud/Highlighter.java3
-rw-r--r--src/main/java/ftbsc/bscv/modules/motion/VanillaFlight.java7
-rw-r--r--src/main/java/ftbsc/bscv/modules/self/Freecam.java6
-rw-r--r--src/main/java/ftbsc/bscv/modules/vision/Fullbright.java11
8 files changed, 44 insertions, 32 deletions
diff --git a/src/main/java/ftbsc/bscv/Boscovicino.java b/src/main/java/ftbsc/bscv/Boscovicino.java
index a3a3f29..d1f4531 100644
--- a/src/main/java/ftbsc/bscv/Boscovicino.java
+++ b/src/main/java/ftbsc/bscv/Boscovicino.java
@@ -77,7 +77,9 @@ public class Boscovicino implements ICommons {
LOGGER.info("Initializing modules");
for (IModule m : modManager.mods) {
- if (m.isEnabled()) m.enable();
+ if (m.isEnabled()) {
+ m.enable(); // re-run enable() to register on the event bus and run enabled callbacks
+ }
}
}
diff --git a/src/main/java/ftbsc/bscv/api/IModule.java b/src/main/java/ftbsc/bscv/api/IModule.java
index 2b0ea12..0219de3 100644
--- a/src/main/java/ftbsc/bscv/api/IModule.java
+++ b/src/main/java/ftbsc/bscv/api/IModule.java
@@ -8,10 +8,14 @@ public interface IModule extends ICommand {
ForgeConfigSpec.Builder getConfigBuilder();
+ boolean isEnabled();
+
default void toggle() {
- if (this.isEnabled())
+ if (this.isEnabled()) {
this.disable();
- else this.enable();
+ } else {
+ this.enable();
+ }
}
default void enable() {
@@ -19,8 +23,6 @@ public interface IModule extends ICommand {
}
default void disable() {
- MinecraftForge.EVENT_BUS.register(this);
+ MinecraftForge.EVENT_BUS.unregister(this);
}
-
- boolean isEnabled();
}
diff --git a/src/main/java/ftbsc/bscv/modules/AbstractModule.java b/src/main/java/ftbsc/bscv/modules/AbstractModule.java
index 384d593..3dbd82e 100644
--- a/src/main/java/ftbsc/bscv/modules/AbstractModule.java
+++ b/src/main/java/ftbsc/bscv/modules/AbstractModule.java
@@ -7,7 +7,6 @@ import ftbsc.bscv.api.IModule;
import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands;
import net.minecraftforge.common.ForgeConfigSpec;
-import net.minecraftforge.common.MinecraftForge;
import static ftbsc.bscv.Boscovicino.log;
@@ -70,23 +69,22 @@ public abstract class AbstractModule implements IModule {
);
}
- protected void onEnabled() {}
- protected void onDisabled() {}
-
- public final void enable() {
- MinecraftForge.EVENT_BUS.register(this);
- this.enabled.set(true);
- this.enabled.save();
- this.onEnabled();
- log(String.format("%s ON", this.getName()));
+ public void enable() {
+ IModule.super.enable();
+ if (!this.enabled.get()) {
+ this.enabled.set(true);
+ this.enabled.save();
+ log(String.format("%s ON", this.getName()));
+ }
}
- public final void disable() {
- MinecraftForge.EVENT_BUS.unregister(this);
- this.enabled.set(false);
- this.enabled.save();
- this.onDisabled();
- log(String.format("%s OFF", this.getName()));
+ public void disable() {
+ IModule.super.disable();
+ if (this.enabled.get()) {
+ this.enabled.set(false);
+ this.enabled.save();
+ log(String.format("%s OFF", this.getName()));
+ }
}
@Override
diff --git a/src/main/java/ftbsc/bscv/modules/defense/Aura.java b/src/main/java/ftbsc/bscv/modules/defense/Aura.java
index 8c02656..290ab81 100644
--- a/src/main/java/ftbsc/bscv/modules/defense/Aura.java
+++ b/src/main/java/ftbsc/bscv/modules/defense/Aura.java
@@ -104,7 +104,8 @@ public class Aura extends QuickModule implements ICommons {
}
@Override
- protected void onEnabled() {
+ public void enable() {
+ super.enable();
this.autotool = (AutoTool) Boscovicino.modManager.get(AutoTool.class);
}
diff --git a/src/main/java/ftbsc/bscv/modules/hud/Highlighter.java b/src/main/java/ftbsc/bscv/modules/hud/Highlighter.java
index 25d5ac7..a5fa0e5 100644
--- a/src/main/java/ftbsc/bscv/modules/hud/Highlighter.java
+++ b/src/main/java/ftbsc/bscv/modules/hud/Highlighter.java
@@ -43,7 +43,8 @@ public class Highlighter extends AbstractModule {
}
@Override
- protected void onEnabled() {
+ public void enable() {
+ super.enable();
this.pattern = Pattern.compile(this.query.get());
}
diff --git a/src/main/java/ftbsc/bscv/modules/motion/VanillaFlight.java b/src/main/java/ftbsc/bscv/modules/motion/VanillaFlight.java
index 9853595..2b238a4 100644
--- a/src/main/java/ftbsc/bscv/modules/motion/VanillaFlight.java
+++ b/src/main/java/ftbsc/bscv/modules/motion/VanillaFlight.java
@@ -97,17 +97,18 @@ public class VanillaFlight extends QuickModule implements ICommons {
}
@Override
- protected void onEnabled() {
+ public void enable() {
+ super.enable();
this.tick = 0;
if (MC.player != null) {
this.couldFlyBefore = MC.player.abilities.mayfly;
this.flyingSpeedBefore = MC.player.abilities.getFlyingSpeed();
- Boscovicino.log(String.format("Flying speed before = %f", this.flyingSpeedBefore));
}
}
@Override
- protected void onDisabled() {
+ public void disable() {
+ super.disable();
ClientPlayerEntity player = MC.player;
if (player != null) {
player.abilities.mayfly = this.couldFlyBefore;
diff --git a/src/main/java/ftbsc/bscv/modules/self/Freecam.java b/src/main/java/ftbsc/bscv/modules/self/Freecam.java
index cd0c107..33c27ae 100644
--- a/src/main/java/ftbsc/bscv/modules/self/Freecam.java
+++ b/src/main/java/ftbsc/bscv/modules/self/Freecam.java
@@ -77,7 +77,8 @@ public class Freecam extends QuickModule implements ICommons {
}
@Override
- protected void onEnabled() {
+ public void enable() {
+ super.enable();
if (MC.player == null) {
Boscovicino.log("[!] Can only enable freecam while in-game");
this.disable();
@@ -102,7 +103,8 @@ public class Freecam extends QuickModule implements ICommons {
}
@Override
- protected void onDisabled() {
+ public void disable() {
+ super.disable();
if (MC.player == null) return;
MC.gameMode.setLocalMode(this.prev_gamemode);
MC.player.noCulling = false;
diff --git a/src/main/java/ftbsc/bscv/modules/vision/Fullbright.java b/src/main/java/ftbsc/bscv/modules/vision/Fullbright.java
index f84a9e4..9569d44 100644
--- a/src/main/java/ftbsc/bscv/modules/vision/Fullbright.java
+++ b/src/main/java/ftbsc/bscv/modules/vision/Fullbright.java
@@ -13,6 +13,10 @@ import java.awt.event.KeyEvent;
@AutoService(ILoadable.class)
public class Fullbright extends QuickModule implements ICommons {
+
+ private final static int NIGHT_VISION_ID = 16;
+ private final static int FOUR_MINUTES_TWENTY_SECONDS = 5204;
+
@Override
protected int getDefaultKey() {
return KeyEvent.VK_V;
@@ -22,11 +26,12 @@ public class Fullbright extends QuickModule implements ICommons {
public void onTick(TickEvent.ClientTickEvent event) {
if (MC == null) return;
if (MC.player == null) return;
- MC.player.addEffect(new EffectInstance(Effect.byId(16), 5204));
+ MC.player.addEffect(new EffectInstance(Effect.byId(NIGHT_VISION_ID), FOUR_MINUTES_TWENTY_SECONDS));
}
@Override
- protected void onDisabled() {
- MC.player.removeEffect(Effect.byId(16));
+ public void disable() {
+ super.disable();
+ MC.player.removeEffect(Effect.byId(NIGHT_VISION_ID));
}
}