Skip to content
This repository was archived by the owner on Jul 19, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import net.minecraft.util.Identifier;

public final class QbmConstant {
public static final Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().create();
public static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
public static final ServerPathUtils pathGetter = new ServerPathUtils();
public static final PermissionManager permissionManager = new PermissionManager();
public static final Identifier REQUEST_OPEN_CONFIG_GUI_PACKET_ID = Identifier.tryParse("quickbackupmulti:request_open_config_gui");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import io.github.skydynamic.increment.storage.lib.util.Storager;
import io.github.skydynamic.increment.storage.lib.database.DataBase;
import io.github.skydynamic.quickbackupmulti.command.permission.PermissionType;
import io.github.skydynamic.quickbackupmulti.config.QbmTempConfig;
import io.github.skydynamic.quickbackupmulti.config.QuickBackupMultiConfig;
import io.github.skydynamic.quickbackupmulti.i18n.Translate;
import io.github.skydynamic.quickbackupmulti.config.Config;
import io.github.skydynamic.quickbackupmulti.config.ConfigStorage;
import io.github.skydynamic.quickbackupmulti.command.QuickBackupMultiCommand;
import io.github.skydynamic.quickbackupmulti.utils.QbmManager;
import io.github.skydynamic.quickbackupmulti.utils.UpdateChecker;
Expand Down Expand Up @@ -37,7 +37,7 @@
//#endif
import java.nio.file.Path;

import static io.github.skydynamic.quickbackupmulti.QbmConstant.gson;
import static io.github.skydynamic.quickbackupmulti.QbmConstant.GSON;
import static io.github.skydynamic.quickbackupmulti.command.permission.PermissionManager.hasPermission;


Expand All @@ -53,16 +53,22 @@ public class QuickBackupMulti implements ModInitializer {

public static final String modName = "QuickBackupMulti";
public static final String modId = "quickbackupmulti";
public static QbmTempConfig TEMP_CONFIG = new QbmTempConfig();

EnvType env = FabricLoader.getInstance().getEnvironmentType();

private static DataBase dataBase;
private static Storager storager;

public static final QuickBackupMultiConfig config = new QuickBackupMultiConfig(QbmConstant.pathGetter.getConfigPath().resolve(modName + ".json"));

@Override
public void onInitialize() {
config.load();
config.save();

FabricLoader.getInstance().getModContainer(modId).ifPresent(modContainer ->
Config.TEMP_CONFIG.setModVersion(modContainer.getMetadata().getVersion().getFriendlyString()));
TEMP_CONFIG.setModVersion(modContainer.getMetadata().getVersion().getFriendlyString()));

//#if MC>=12005
//$$ Packets.registerPacketCodec();
Expand All @@ -71,8 +77,7 @@ public void onInitialize() {
java.util.logging.Logger.getLogger("").setFilter(filter);
((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()).addFilter(filter);

Config.INSTANCE.load();
Translate.handleResourceReload(Config.INSTANCE.getLang());
Translate.handleResourceReload(config.getLang());

initDataBase();

Expand All @@ -87,42 +92,42 @@ public void onInitialize() {
//#endif
registerPacketHandler();
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
Config.TEMP_CONFIG.setServerValue(server);
Config.TEMP_CONFIG.setEnv(env);
TEMP_CONFIG.setServerValue(server);
TEMP_CONFIG.setEnv(env);
});

ServerLifecycleEvents.SERVER_STOPPED.register(server -> {
if (env == EnvType.SERVER) {
if (Config.TEMP_CONFIG.isBackup) {
QbmManager.restore(Config.TEMP_CONFIG.backupSlot);
if (TEMP_CONFIG.isBackup) {
QbmManager.restore(TEMP_CONFIG.backupSlot);
getDataBase().stopInternalMongoServer();
Config.TEMP_CONFIG.setIsBackupValue(false);
switch (Config.INSTANCE.getAutoRestartMode()) {
TEMP_CONFIG.setIsBackupValue(false);
switch (config.getAutoRestartMode()) {
case DISABLE -> {}
case DEFAULT -> {
Config.TEMP_CONFIG.server.stopped = false;
Config.TEMP_CONFIG.server.running = true;
Config.TEMP_CONFIG.server.runServer();
TEMP_CONFIG.server.stopped = false;
TEMP_CONFIG.server.running = true;
TEMP_CONFIG.server.runServer();
}
case MCSM -> new Thread(() -> System.exit(-4000)).start();
}
} else {
getDataBase().stopInternalMongoServer();
}
}
Config.TEMP_CONFIG.server = null;
TEMP_CONFIG.server = null;
});

if (Config.INSTANCE.getCheckUpdata()) updateChecker.start();
if (config.isCheckUpdate()) updateChecker.start();
}

public void initDataBase() {
DataBaseManager dataBaseManager = new DataBaseManager(
"QuickBackupMulti",
Path.of(Config.INSTANCE.getStoragePath())
Path.of(config.getStoragePath())
);

dataBase = new DataBase(dataBaseManager, Config.INSTANCE.getConfigStorage());
dataBase = new DataBase(dataBaseManager, config);

IndexUtil.setDataBase(dataBase);
}
Expand All @@ -138,12 +143,12 @@ public static void registerPacketHandler() {
//#if MC>=12005
//$$ ServerPlayerEntity player = context.player();
//$$ if (player.hasPermissionLevel(2)) ServerPlayNetworking.send(
//$$ player, new Packets.OpenConfigGuiPacket(gson.toJson(Config.INSTANCE.getConfigStorage()))
//$$ player, new Packets.OpenConfigGuiPacket(GSON.toJson(config.getConfig()))
//$$ );
//#else
if (hasPermission(player.getCommandSource(), 2, PermissionType.HELPER)) {
PacketByteBuf sendBuf = PacketByteBufs.create();
sendBuf.writeString(gson.toJson(Config.INSTANCE.getConfigStorage()));
sendBuf.writeString(GSON.toJson(config.getConfig()));
ServerPlayNetworking.send(player, QbmConstant.OPEN_CONFIG_GUI_PACKET_ID, sendBuf);
}
//#endif
Expand All @@ -164,10 +169,10 @@ public static void registerPacketHandler() {
//#else
String configStorage = buf.readString();
//#endif
ConfigStorage c = QbmConstant.gson.fromJson(configStorage, ConfigStorage.class);
QuickBackupMultiConfig.ConfigStorage c = QbmConstant.GSON.fromJson(configStorage, QuickBackupMultiConfig.ConfigStorage.class);
// Verify config
ConfigStorage result = QbmManager.verifyConfig(c, player);
Config.INSTANCE.setConfigStorage(result);
QuickBackupMultiConfig.ConfigStorage result = QbmManager.verifyConfig(c, player);
config.setConfig(result);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.skydynamic.quickbackupmulti;

import io.github.skydynamic.quickbackupmulti.config.QuickBackupMultiConfig;
import io.github.skydynamic.quickbackupmulti.screen.ConfigScreen;
import io.github.skydynamic.quickbackupmulti.config.ConfigStorage;

import net.fabricmc.api.ClientModInitializer;
//#if MC>=12005
Expand Down Expand Up @@ -55,13 +55,13 @@ public static void registerPacketHandler() {
//#if MC<12005
ClientPlayNetworking.registerGlobalReceiver(OPEN_CONFIG_GUI_PACKET_ID, (client, handler, buf, responseSender) -> {
String config = buf.readString();
ConfigStorage c = gson.fromJson(config, ConfigStorage.class);
QuickBackupMultiConfig.ConfigStorage c = GSON.fromJson(config, QuickBackupMultiConfig.ConfigStorage.class);
client.execute(() -> client.setScreen(new ConfigScreen(client.currentScreen, c)));
});
//#else
//$$ ClientPlayNetworking.registerGlobalReceiver(Packets.OpenConfigGuiPacket.ID, (payload, context) -> {
//$$ String config = payload.config();
//$$ ConfigStorage c = gson.fromJson(config, ConfigStorage.class);
//$$ QuickBackupMultiConfig.ConfigStorage c = GSON.fromJson(config, QuickBackupMultiConfig.ConfigStorage.class);
//$$ MinecraftClient client = context.client();
//$$ client.execute(() -> client.setScreen(new ConfigScreen(client.currentScreen, c)));
//$$ });
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.skydynamic.quickbackupmulti.backup;

import io.github.skydynamic.quickbackupmulti.config.Config;
import io.github.skydynamic.quickbackupmulti.QuickBackupMulti;
import io.github.skydynamic.quickbackupmulti.i18n.Translate;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
Expand Down Expand Up @@ -40,7 +40,7 @@ public void run() {
}
minecraftClient.execute(() -> minecraftClient.setScreen(null));
restore(slot);
Config.TEMP_CONFIG.setIsBackupValue(false);
QuickBackupMulti.TEMP_CONFIG.setIsBackupValue(false);
getDataBase().stopInternalMongoServer();
minecraftClient.execute(() -> {
Text title = Text.of(Translate.tr("quickbackupmulti.toast.end_title"));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.skydynamic.quickbackupmulti.backup;

import io.github.skydynamic.quickbackupmulti.config.Config;
import io.github.skydynamic.quickbackupmulti.QuickBackupMulti;
import io.github.skydynamic.quickbackupmulti.command.QuickBackupMultiCommand;
import net.fabricmc.api.EnvType;
import net.minecraft.server.network.ServerPlayerEntity;
Expand All @@ -24,13 +24,13 @@ public RestoreTask(EnvType env, List<ServerPlayerEntity> playerList, String slot
@Override
public void run() {
QuickBackupMultiCommand.QbDataHashMap.clear();
Config.TEMP_CONFIG.setIsBackupValue(true);
QuickBackupMulti.TEMP_CONFIG.setIsBackupValue(true);
if (env == EnvType.SERVER) {
for (ServerPlayerEntity player : playerList) {
player.networkHandler.disconnect(Text.of("Server restore backup"));
}
Config.TEMP_CONFIG.setIsBackupValue(true);
Config.TEMP_CONFIG.server.stop(true);
QuickBackupMulti.TEMP_CONFIG.setIsBackupValue(true);
QuickBackupMulti.TEMP_CONFIG.server.stop(true);
} else {
//不分到另一个class中执行 会找不到Screen然后炸(
new ClientRestoreDelegate(playerList, slot).run();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
//#if MC<=11820
//$$ import com.mojang.brigadier.exceptions.CommandSyntaxException;
//#endif
import io.github.skydynamic.quickbackupmulti.QuickBackupMulti;
import io.github.skydynamic.quickbackupmulti.backup.RestoreTask;
import io.github.skydynamic.quickbackupmulti.command.permission.PermissionManager;
import io.github.skydynamic.quickbackupmulti.command.permission.PermissionType;
import io.github.skydynamic.quickbackupmulti.utils.Messenger;
import io.github.skydynamic.quickbackupmulti.config.Config;
import net.fabricmc.api.EnvType;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.server.MinecraftServer;
Expand Down Expand Up @@ -158,7 +158,7 @@ private static void executeRestore(ServerCommandSource commandSource) {
player.sendMessage(Text.of(tr("quickbackupmulti.restore.countdown.intro", executePlayerName)), false);
}
String slot = (String) QbDataHashMap.get("QBM").get("Slot");
Config.TEMP_CONFIG.setBackupSlot(slot);
QuickBackupMulti.TEMP_CONFIG.setBackupSlot(slot);
Timer timer = (Timer) QbDataHashMap.get("QBM").get("Timer");
ScheduledExecutorService countdown = (ScheduledExecutorService) QbDataHashMap.get("QBM").get("Countdown");
AtomicInteger countDown = new AtomicInteger(11);
Expand Down Expand Up @@ -197,7 +197,7 @@ private static int cancelRestore(ServerCommandSource commandSource) {
timer.cancel();
countdown.shutdown();
QbDataHashMap.clear();
Config.TEMP_CONFIG.setIsBackupValue(false);
QuickBackupMulti.TEMP_CONFIG.setIsBackupValue(false);
Messenger.sendMessage(commandSource, Text.of(tr("quickbackupmulti.restore.abort")));
}
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
import com.mojang.brigadier.arguments.IntegerArgumentType;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import io.github.skydynamic.quickbackupmulti.QuickBackupMulti;
import io.github.skydynamic.quickbackupmulti.command.permission.PermissionManager;
import io.github.skydynamic.quickbackupmulti.command.permission.PermissionType;
import io.github.skydynamic.quickbackupmulti.command.suggestion.AutoRestartModeSuggestionProvider;
import io.github.skydynamic.quickbackupmulti.command.suggestion.LangSuggestionProvider;
import io.github.skydynamic.quickbackupmulti.config.AutoRestartMode;
import io.github.skydynamic.quickbackupmulti.i18n.Translate;
import io.github.skydynamic.quickbackupmulti.utils.Messenger;
import io.github.skydynamic.quickbackupmulti.utils.ScheduleUtils;
import io.github.skydynamic.quickbackupmulti.config.Config;
import net.minecraft.server.command.CommandManager;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.Text;
Expand Down Expand Up @@ -116,27 +117,27 @@ public class SettingCommand {

private static int getAutoRestartMode(ServerCommandSource commandSource) {
Messenger.sendMessage(commandSource,
Messenger.literal(tr("quickbackupmulti.restartmode.get", Config.INSTANCE.getAutoRestartMode().name())));
Messenger.literal(tr("quickbackupmulti.restartmode.get", QuickBackupMulti.config.getAutoRestartMode().name())));
return 1;
}

private static int setAutoRestartMode(ServerCommandSource commandSource, String mode) {
Config.AutoRestartMode newMode = Config.AutoRestartMode.valueOf(mode.toUpperCase());
Config.INSTANCE.setAutoRestartMode(newMode);
AutoRestartMode newMode = AutoRestartMode.valueOf(mode.toUpperCase());
QuickBackupMulti.config.setAutoRestartMode(newMode);
Messenger.sendMessage(commandSource,
Messenger.literal(tr("quickbackupmulti.restartmode.switch", newMode.name())));
return 1;
}

private static int setUseInternalDataBase(ServerCommandSource commandSource, Boolean value) {
if (value != Config.INSTANCE.getUseInternalDataBase()) {
Config.INSTANCE.setUseInternalDataBase(value);
if (value != QuickBackupMulti.config.getUseInternalDataBase()) {
QuickBackupMulti.config.setUseInternalDataBase(value);
try {
if (value) {
setDataStore(Config.TEMP_CONFIG.worldName);
setDataStore(QuickBackupMulti.TEMP_CONFIG.worldName);
} else {
getDataBase().stopInternalMongoServer();
setDataStore(Config.TEMP_CONFIG.worldName);
setDataStore(QuickBackupMulti.TEMP_CONFIG.worldName);
}
Messenger.sendMessage(commandSource,
Messenger.literal(tr("quickbackupmulti.database.set_success")));
Expand All @@ -158,7 +159,7 @@ private static int setUseInternalDataBase(ServerCommandSource commandSource, Boo
}

private static int getLang(ServerCommandSource commandSource) {
Messenger.sendMessage(commandSource, Text.of(tr("quickbackupmulti.lang.get", Config.INSTANCE.getLang())));
Messenger.sendMessage(commandSource, Text.of(tr("quickbackupmulti.lang.get", QuickBackupMulti.config.getLang())));
return 1;
}

Expand All @@ -169,12 +170,12 @@ private static int setLang(ServerCommandSource commandSource, String lang) {
}
Translate.handleResourceReload(lang);
Messenger.sendMessage(commandSource, Text.of(tr("quickbackupmulti.lang.set", lang)));
Config.INSTANCE.setLang(lang);
QuickBackupMulti.config.setLang(lang);
return 1;
}

private static int switchMode(ServerCommandSource commandSource, String mode) {
Config.INSTANCE.setScheduleMode(mode);
QuickBackupMulti.config.setScheduleMode(mode);
return switchScheduleMode(commandSource, mode);
}

Expand Down Expand Up @@ -202,9 +203,9 @@ private static int disableScheduleBackup(ServerCommandSource commandSource) {

private static int enableScheduleBackup(ServerCommandSource commandSource) {
try {
Config.INSTANCE.setScheduleBackup(true);
if (Config.TEMP_CONFIG.scheduler != null) {
Config.TEMP_CONFIG.scheduler.shutdown();
QuickBackupMulti.config.setScheduleBackup(true);
if (QuickBackupMulti.TEMP_CONFIG.scheduler != null) {
QuickBackupMulti.TEMP_CONFIG.scheduler.shutdown();
}
startSchedule(commandSource);
return 1;
Expand All @@ -220,23 +221,23 @@ private static int enableScheduleBackup(ServerCommandSource commandSource) {
public static int getScheduleMode(ServerCommandSource commandSource) {
Messenger.sendMessage(
commandSource,
Text.of(tr("quickbackupmulti.schedule.mode.get", Config.INSTANCE.getScheduleMode()))
Text.of(tr("quickbackupmulti.schedule.mode.get", QuickBackupMulti.config.getScheduleMode()))
);
return 1;
}

public static int getNextBackupTime(ServerCommandSource commandSource) {
if (Config.INSTANCE.getScheduleBackup()) {
if (QuickBackupMulti.config.isScheduleBackup()) {
String nextBackupTimeString = "";
switch (Config.INSTANCE.getScheduleMode()) {
switch (QuickBackupMulti.config.getScheduleMode()) {
case "cron" : {
nextBackupTimeString = getNextExecutionTime(Config.INSTANCE.getScheduleCron(), false);
nextBackupTimeString = getNextExecutionTime(QuickBackupMulti.config.getScheduleCron(), false);
break;
}
case "interval" : {
nextBackupTimeString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(
Config.TEMP_CONFIG.latestScheduleExecuteTime + Config.INSTANCE.getScheduleInterval() * 1000L
QuickBackupMulti.TEMP_CONFIG.latestScheduleExecuteTime + QuickBackupMulti.config.getScheduleInterval() * 1000L
);
break;
}
Expand Down
Loading
Loading