From 80176425b999c094f984f20642bd77380d32218e Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Tue, 11 Jul 2023 15:08:13 +0100 Subject: Fix some moddata commands blocking the main thread Closes #520 --- .../command/AdminModdataResetCommandHandler.java | 13 ++--- .../command/AdminModdataStartCommandHandler.java | 59 +++++++++++----------- 2 files changed, 37 insertions(+), 35 deletions(-) (limited to 'bukkit/src/main/java') diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminModdataResetCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminModdataResetCommandHandler.java index 548fd57d..185281f3 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminModdataResetCommandHandler.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminModdataResetCommandHandler.java @@ -24,18 +24,19 @@ public class AdminModdataResetCommandHandler implements CommandHandler { @Override public void handle(CommandSender sender, String[] args) { if (args.length > 4) { - QPlayer qPlayer = CommandUtils.getOtherPlayerSync(sender, args[3], plugin); - if (qPlayer == null) return; Quest quest = plugin.getQuestManager().getQuestById(args[4]); if (quest == null) { Messages.COMMAND_QUEST_START_DOESNTEXIST.send(sender, "{quest}", args[4]); return; } - QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); - questProgressFile.generateBlankQuestProgress(quest, true); - Messages.COMMAND_QUEST_ADMIN_RESET_SUCCESS.send(sender, "{player}", args[3], "{quest}", quest.getId()); - CommandUtils.doSafeSave(qPlayer, questProgressFile, plugin); + CommandUtils.useOtherPlayer(sender, args[3], plugin, qPlayer -> { + QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); + questProgressFile.generateBlankQuestProgress(quest, true); + Messages.COMMAND_QUEST_ADMIN_RESET_SUCCESS.send(sender, "{player}", args[3], "{quest}", quest.getId()); + + CommandUtils.doSafeSave(qPlayer, questProgressFile, plugin); + }); return; } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminModdataStartCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminModdataStartCommandHandler.java index dcd29aab..a53fd454 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminModdataStartCommandHandler.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminModdataStartCommandHandler.java @@ -25,42 +25,43 @@ public class AdminModdataStartCommandHandler implements CommandHandler { @Override public void handle(CommandSender sender, String[] args) { if (args.length > 4) { - QPlayer qPlayer = CommandUtils.getOtherPlayerSync(sender, args[3], plugin); - if (qPlayer == null) return; - QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); Quest quest = plugin.getQuestManager().getQuestById(args[4]); if (quest == null) { Messages.COMMAND_QUEST_START_DOESNTEXIST.send(sender, "{quest}", args[4]); return; } - QuestStartResult response = qPlayer.startQuest(quest); - switch (response) { - case QUEST_LIMIT_REACHED: - Messages.COMMAND_QUEST_ADMIN_START_FAILLIMIT.send(sender, "{player}", args[3], "{quest}", quest.getId()); - return; - case QUEST_ALREADY_COMPLETED: - Messages.COMMAND_QUEST_ADMIN_START_FAILCOMPLETE.send(sender, "{player}", args[3], "{quest}", quest.getId()); - return; - case QUEST_COOLDOWN: - Messages.COMMAND_QUEST_ADMIN_START_FAILCOOLDOWN.send(sender, "{player}", args[3], "{quest}", quest.getId()); - return; - case QUEST_LOCKED: - Messages.COMMAND_QUEST_ADMIN_START_FAILLOCKED.send(sender, "{player}", args[3], "{quest}", quest.getId()); - return; - case QUEST_ALREADY_STARTED: - Messages.COMMAND_QUEST_ADMIN_START_FAILSTARTED.send(sender, "{player}", args[3], "{quest}", quest.getId()); - return; - case QUEST_NO_PERMISSION: - Messages.COMMAND_QUEST_ADMIN_START_FAILPERMISSION.send(sender, "{player}", args[3], "{quest}", quest.getId()); - return; - case NO_PERMISSION_FOR_CATEGORY: - Messages.COMMAND_QUEST_ADMIN_START_FAILCATEGORYPERMISSION.send(sender, "{player}", args[3], "{quest}", quest.getId()); - return; - } - Messages.COMMAND_QUEST_ADMIN_START_SUCCESS.send(sender, "{player}", args[3], "{quest}", quest.getId()); + CommandUtils.useOtherPlayer(sender, args[3], plugin, qPlayer -> { + QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); + QuestStartResult response = qPlayer.startQuest(quest); + switch (response) { + case QUEST_LIMIT_REACHED: + Messages.COMMAND_QUEST_ADMIN_START_FAILLIMIT.send(sender, "{player}", args[3], "{quest}", quest.getId()); + return; + case QUEST_ALREADY_COMPLETED: + Messages.COMMAND_QUEST_ADMIN_START_FAILCOMPLETE.send(sender, "{player}", args[3], "{quest}", quest.getId()); + return; + case QUEST_COOLDOWN: + Messages.COMMAND_QUEST_ADMIN_START_FAILCOOLDOWN.send(sender, "{player}", args[3], "{quest}", quest.getId()); + return; + case QUEST_LOCKED: + Messages.COMMAND_QUEST_ADMIN_START_FAILLOCKED.send(sender, "{player}", args[3], "{quest}", quest.getId()); + return; + case QUEST_ALREADY_STARTED: + Messages.COMMAND_QUEST_ADMIN_START_FAILSTARTED.send(sender, "{player}", args[3], "{quest}", quest.getId()); + return; + case QUEST_NO_PERMISSION: + Messages.COMMAND_QUEST_ADMIN_START_FAILPERMISSION.send(sender, "{player}", args[3], "{quest}", quest.getId()); + return; + case NO_PERMISSION_FOR_CATEGORY: + Messages.COMMAND_QUEST_ADMIN_START_FAILCATEGORYPERMISSION.send(sender, "{player}", args[3], "{quest}", quest.getId()); + return; + } + + Messages.COMMAND_QUEST_ADMIN_START_SUCCESS.send(sender, "{player}", args[3], "{quest}", quest.getId()); - CommandUtils.doSafeSave(qPlayer, questProgressFile, plugin); + CommandUtils.doSafeSave(qPlayer, questProgressFile, plugin); + }); return; } -- cgit v1.2.3-70-g09d2