diff --git a/src/main/java/net/snackbag/tt20/command/MainCommand.java b/src/main/java/net/snackbag/tt20/command/MainCommand.java index 40674c0..b6b223c 100644 --- a/src/main/java/net/snackbag/tt20/command/MainCommand.java +++ b/src/main/java/net/snackbag/tt20/command/MainCommand.java @@ -38,6 +38,7 @@ private static int executeStatus(CommandContext context) { source.sendMessage(Text.literal("§7Time acceleration: " + (TT20.config.timeAcceleration() ? "§aON" : "§cOFF"))); source.sendMessage(Text.literal("§7Random tickspeed acceleration: " + (TT20.config.randomTickSpeedAcceleration() ? "§aON" : "§cOFF"))); source.sendMessage(Text.literal("§7Singleplayer warning: " + (TT20.config.singlePlayerWarning() ? "§aON" : "§cOFF"))); + source.sendMessage(Text.literal("§7Singleplayer enabled: " + (TT20.config.singlePlayerEnabled() ? "§aON" : "§cOFF"))); source.sendMessage(Text.literal("§7Server watchdog: " + (TT20.config.serverWatchdog() ? "§aON" : "§cOFF"))); executeTps(context, false); source.sendMessage(Text.literal("\n§8Version: §7" + TT20.VERSION)); @@ -56,6 +57,9 @@ private static int executeReload(CommandContext context) { TT20.blockEntityMaskConfig.reload(); source.sendMessage(Text.literal("Reloaded block entity mask config")); + if (!source.getServer().isDedicated()) TT20.config.enabled(TT20.config.singlePlayerEnabled()); + TT20.config.save(); + return 1; } diff --git a/src/main/java/net/snackbag/tt20/config/MainConfig.java b/src/main/java/net/snackbag/tt20/config/MainConfig.java index fbec57c..9e70344 100644 --- a/src/main/java/net/snackbag/tt20/config/MainConfig.java +++ b/src/main/java/net/snackbag/tt20/config/MainConfig.java @@ -12,8 +12,8 @@ public class MainConfig extends JSONConfiguration { private boolean sleepingAcceleration = true; private boolean timeAcceleration = true; private boolean randomTickSpeedAcceleration = true; + private boolean singlePlayerEnabled = true; private boolean serverWatchdog = true; - private boolean singlePlayerWarning = true; private boolean automaticUpdater = true; @@ -33,6 +33,7 @@ public MainConfig() { putIfEmpty("singleplayer-warning", singlePlayerWarning); putIfEmpty("time-acceleration", timeAcceleration); putIfEmpty("random-tickspeed-acceleration", randomTickSpeedAcceleration); + putIfEmpty("singleplayer-enabled", singlePlayerEnabled); putIfEmpty("automatic-updater", automaticUpdater); save(); @@ -55,6 +56,7 @@ public void reload() { this.singlePlayerWarning = getAsBooleanOrDefault("singleplayer-warning", singlePlayerWarning); this.timeAcceleration = getAsBooleanOrDefault("time-acceleration", timeAcceleration); this.randomTickSpeedAcceleration = getAsBooleanOrDefault("random-tickspeed-acceleration", randomTickSpeedAcceleration); + this.singlePlayerEnabled = getAsBooleanOrDefault("singleplayer-enabled", singlePlayerEnabled); this.automaticUpdater = getAsBooleanOrDefault("automatic-updater", automaticUpdater); } @@ -166,6 +168,14 @@ public void randomTickSpeedAcceleration(boolean enabled) { put("random-tickspeed-acceleration", enabled); } + public boolean singlePlayerEnabled() { + return singlePlayerEnabled; + } + + public void singlePlayerEnabled(boolean enabled) { + put("singleplayer-enabled", enabled); + } + public boolean singlePlayerWarning() { return singlePlayerWarning; } diff --git a/src/main/java/net/snackbag/tt20/mixin/client/ChatHudMixin.java b/src/main/java/net/snackbag/tt20/mixin/client/ChatHudMixin.java index b07d707..0487e9a 100644 --- a/src/main/java/net/snackbag/tt20/mixin/client/ChatHudMixin.java +++ b/src/main/java/net/snackbag/tt20/mixin/client/ChatHudMixin.java @@ -5,7 +5,6 @@ //? if >=1.20.1 import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.ChatHud; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import net.snackbag.tt20.TT20; import org.spongepowered.asm.mixin.Mixin; @@ -26,8 +25,10 @@ public abstract class ChatHudMixin { *///?} else { private void onPlayerConnectWarn(DrawContext context, int currentTick, int mouseX, int mouseY, CallbackInfo ci) { //?} - if (TT20.warned || !TT20.config.singlePlayerWarning()) return; - addMessage(Text.literal("§c§lCritical incompatibilities found!\n\n§c§6TT20 §cis not stable on singleplayer and you may find yourself having unwanted side effects. You can disable each feature in the config if it gets too annoying.")); + if (TT20.config.singlePlayerEnabled() && TT20.config.singlePlayerWarning() && !TT20.warned) { + addMessage(Text.literal("§c§6TT20 §cis §lActive§r§c!")); + addMessage(Text.literal("§c§6TT20 §cis not stable on singleplayer and you may find yourself having unwanted side effects. You can disable each feature in the config.")); + } TT20.warned = true; } } diff --git a/src/main/java/net/snackbag/tt20/mixin/client/IntegratedServerMixin.java b/src/main/java/net/snackbag/tt20/mixin/client/IntegratedServerMixin.java index ed7f50d..34077b9 100644 --- a/src/main/java/net/snackbag/tt20/mixin/client/IntegratedServerMixin.java +++ b/src/main/java/net/snackbag/tt20/mixin/client/IntegratedServerMixin.java @@ -8,10 +8,18 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Environment(EnvType.CLIENT) @Mixin(IntegratedServer.class) public abstract class IntegratedServerMixin { + @Inject(method = "setupServer", at = @At("HEAD")) + private void disableTT20(CallbackInfoReturnable cir) { + TT20.config.reload(); + TT20.config.enabled(TT20.config.singlePlayerEnabled()); + TT20.config.save(); + } + @Inject(method = "stop", at = @At("HEAD")) private void resetWarn(boolean waitForShutdown, CallbackInfo ci) { TT20.warned = false;