From 0cef1e8dfdbc740e45cc3e0c37ea64eb75159d99 Mon Sep 17 00:00:00 2001 From: montlikadani Date: Thu, 1 Aug 2019 15:10:36 +0200 Subject: [PATCH] Confirmation for leave commands should work --- .../gamingmesh/jobs/commands/list/leave.java | 23 ++++++++++-------- .../jobs/commands/list/leaveall.java | 24 +++++++++++-------- .../java/com/gamingmesh/jobs/stuff/Util.java | 2 ++ src/main/resources/locale/messages_hu.yml | 4 ++++ 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/leave.java b/src/main/java/com/gamingmesh/jobs/commands/list/leave.java index 3737c467..c1983dfd 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/leave.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/leave.java @@ -1,8 +1,5 @@ package com.gamingmesh.jobs.commands.list; -import java.util.HashSet; -import java.util.Set; - import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -11,11 +8,10 @@ import com.gamingmesh.jobs.commands.Cmd; import com.gamingmesh.jobs.commands.JobCommand; import com.gamingmesh.jobs.container.Job; import com.gamingmesh.jobs.container.JobsPlayer; +import com.gamingmesh.jobs.stuff.Util; public class leave implements Cmd { - private Set confirm = new HashSet<>(); - @Override @JobCommand(800) public boolean perform(Jobs plugin, final CommandSender sender, final String[] args) { @@ -28,7 +24,6 @@ public class leave implements Cmd { } Player pSender = (Player) sender; - JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(pSender); String jobName = args[0]; Job job = Jobs.getJob(jobName); @@ -38,16 +33,24 @@ public class leave implements Cmd { } if (Jobs.getGCManager().EnableConfirmation) { - if (!confirm.contains(pSender)) { - confirm.add(pSender); - org.bukkit.Bukkit.getScheduler().runTaskLater(plugin, () -> confirm.remove(pSender), 20 * Jobs.getGCManager().ConfirmExpiryTime); + String uuid = pSender.getUniqueId().toString(); + + if (!Util.confirmLeave.contains(uuid)) { + Util.confirmLeave.add(uuid); + + plugin.getServer().getScheduler().runTaskLater(plugin, () -> Util.confirmLeave.remove(uuid), + 20 * Jobs.getGCManager().ConfirmExpiryTime); + pSender.sendMessage(Jobs.getLanguage().getMessage("command.leave.confirmationNeed", "[jobname]", jobName, "[time]", Jobs.getGCManager().ConfirmExpiryTime)); return true; } - confirm.remove(pSender); + + Util.confirmLeave.remove(uuid); } + JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(pSender); + if (Jobs.getPlayerManager().leaveJob(jPlayer, job)) pSender.sendMessage(Jobs.getLanguage().getMessage("command.leave.success", "%jobname%", job.getChatColor() + job.getName())); else diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/leaveall.java b/src/main/java/com/gamingmesh/jobs/commands/list/leaveall.java index 9bb4d1c1..a1e548de 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/leaveall.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/leaveall.java @@ -1,8 +1,6 @@ package com.gamingmesh.jobs.commands.list; -import java.util.HashSet; import java.util.List; -import java.util.Set; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -12,11 +10,10 @@ import com.gamingmesh.jobs.commands.Cmd; import com.gamingmesh.jobs.commands.JobCommand; import com.gamingmesh.jobs.container.JobProgression; import com.gamingmesh.jobs.container.JobsPlayer; +import com.gamingmesh.jobs.stuff.Util; public class leaveall implements Cmd { - private Set confirm = new HashSet<>(); - @Override @JobCommand(900) public boolean perform(Jobs plugin, final CommandSender sender, final String[] args) { @@ -29,19 +26,26 @@ public class leaveall implements Cmd { JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(pSender); List jobs = jPlayer.getJobProgression(); - if (jobs.size() == 0) { + if (jobs.isEmpty()) { sender.sendMessage(Jobs.getLanguage().getMessage("command.leaveall.error.nojobs")); return true; } if (Jobs.getGCManager().EnableConfirmation) { - if (!confirm.contains(pSender)) { - confirm.add(pSender); - org.bukkit.Bukkit.getScheduler().runTaskLater(plugin, () -> confirm.remove(pSender), 20 * Jobs.getGCManager().ConfirmExpiryTime); - pSender.sendMessage(Jobs.getLanguage().getMessage("command.leaveall.confirmationNeed", "[time]", Jobs.getGCManager().ConfirmExpiryTime)); + String uuid = pSender.getUniqueId().toString(); + + if (!Util.confirmLeave.contains(uuid)) { + Util.confirmLeave.add(uuid); + + plugin.getServer().getScheduler().runTaskLater(plugin, () -> Util.confirmLeave.remove(uuid), + 20 * Jobs.getGCManager().ConfirmExpiryTime); + + pSender.sendMessage(Jobs.getLanguage().getMessage("command.leaveall.confirmationNeed", "[time]", + Jobs.getGCManager().ConfirmExpiryTime)); return true; } - confirm.remove(pSender); + + Util.confirmLeave.remove(uuid); } Jobs.getPlayerManager().leaveAllJobs(jPlayer); diff --git a/src/main/java/com/gamingmesh/jobs/stuff/Util.java b/src/main/java/com/gamingmesh/jobs/stuff/Util.java index 40c2c221..f6110f61 100644 --- a/src/main/java/com/gamingmesh/jobs/stuff/Util.java +++ b/src/main/java/com/gamingmesh/jobs/stuff/Util.java @@ -3,6 +3,7 @@ package com.gamingmesh.jobs.stuff; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.UUID; import org.bukkit.Color; @@ -23,6 +24,7 @@ import com.gamingmesh.jobs.CMILib.ItemManager.CMIMaterial; public class Util { private static HashMap jobsEditorMap = new HashMap<>(); + public static List confirmLeave = new ArrayList<>(); @SuppressWarnings("deprecation") public static ItemStack setEntityType(ItemStack is, EntityType type) throws IllegalArgumentException { diff --git a/src/main/resources/locale/messages_hu.yml b/src/main/resources/locale/messages_hu.yml index d4117023..44a48a64 100644 --- a/src/main/resources/locale/messages_hu.yml +++ b/src/main/resources/locale/messages_hu.yml @@ -370,12 +370,16 @@ command: help: info: 'Elhagyja a megadott munkát.' args: '[jobname]' + confirmationNeed: '&cBiztos vagy benne, hogy elhagyod a(z)&e [jobname]&c munkát? Írd be a parancsot újra&6 [time] + másodpercen belül, &chogy megerősítsd!' success: '&cSikeresen elhagytad a(z)&7 %jobname%&c munkát!' leaveall: help: info: 'Elhagyja az összes jelenlegi munkát.' error: nojobs: '&cNincs egyetlen munkád sem!' + confirmationNeed: '&cBiztos vagy benne, hogy elhagyod az összes munkát? Írd be a parancsot újra&6 [time] + másodpercen belül, &chogy megerősítsd!' success: '&cElhagytad az összes munkát!' explored: help: