Thread-safety

This commit is contained in:
HaHaWTH 2023-12-30 09:20:16 +08:00
parent b322032757
commit b25d874122
2 changed files with 22 additions and 11 deletions

View File

@ -73,7 +73,7 @@ public class AuthMe extends JavaPlugin {
// Version and build number values // Version and build number values
private static String pluginVersion = "5.6.0-Fork"; private static String pluginVersion = "5.6.0-Fork";
public static final String pluginBuild = "b"; private static final String pluginBuild = "b";
private static String pluginBuildNumber = "38"; private static String pluginBuildNumber = "38";
// Private instances // Private instances
private EmailService emailService; private EmailService emailService;
@ -85,12 +85,22 @@ public class AuthMe extends JavaPlugin {
private Injector injector; private Injector injector;
private BackupService backupService; private BackupService backupService;
public static ConsoleLogger logger; public static ConsoleLogger logger;
/** /**
* Constructor. * Constructor.
*/ */
public AuthMe() { public AuthMe() {
} }
/**
* Get the plugin's build
*
* @return The plugin's build
*/
public static String getPluginBuild() {
return pluginBuild;
}
/** /**
* Get the plugin's name. * Get the plugin's name.

View File

@ -32,10 +32,10 @@ import org.bukkit.inventory.meta.ItemMeta;
import javax.inject.Inject; import javax.inject.Inject;
import java.io.File; import java.io.File;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level; import java.util.logging.Level;
@ -70,12 +70,14 @@ public class GuiCaptchaHandler implements Listener {
private int timesLeft = 3; private int timesLeft = 3;
//Use ConcurrentHashMap to store player and their close reason //Use ConcurrentHashMap to store player and their close reason
/* We used many async tasks so there is concurrent**/ /* We used many async tasks so there is concurrent**/
public static HashMap<Player, String> closeReasonMap = new HashMap<>(); public static ConcurrentHashMap<Player, String> closeReasonMap = new ConcurrentHashMap<>();
//define randomStringSet //define randomStringSet
String randomSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz!@#%&*()_+"; String randomSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz!@#%&*()_+";
String randomString = ""; String randomString = "";
Random randomItemSet = new Random(); Random randomItemSet = new Random();
Random howManyRandom = new Random(); Random howManyRandom = new Random();
private boolean isPacketListenersActive = false; private boolean isPacketListenersActive = false;
public GuiCaptchaHandler() { public GuiCaptchaHandler() {
@ -162,6 +164,7 @@ public class GuiCaptchaHandler implements Listener {
messages.send(playerunreg, MessageKey.GUI_CAPTCHA_VERIFIED_AUTO_BEDROCK); messages.send(playerunreg, MessageKey.GUI_CAPTCHA_VERIFIED_AUTO_BEDROCK);
return; return;
} }
bukkitService.runTaskAsynchronously(() -> { bukkitService.runTaskAsynchronously(() -> {
bukkitService.runTask(() -> { bukkitService.runTask(() -> {
randomString = sb.toString(); randomString = sb.toString();
@ -233,14 +236,12 @@ public class GuiCaptchaHandler implements Listener {
timeOut = settings.getProperty(RestrictionSettings.TIMEOUT); timeOut = settings.getProperty(RestrictionSettings.TIMEOUT);
} }
long finalTimeOut = timeOut; long finalTimeOut = timeOut;
bukkitService.runTask(() -> { bukkitService.runTaskLater(() -> {
bukkitService.runTaskLater(() -> { if (!closeReasonMap.containsKey(playerunreg) && !authmeApi.isRegistered(playerunreg.getName())) {
if (!closeReasonMap.containsKey(playerunreg) && !authmeApi.isRegistered(playerunreg.getName())) { playerunreg.kickPlayer(service.retrieveSingleMessage(playerunreg, MessageKey.GUI_CAPTCHA_KICK_TIMEOUT));
playerunreg.kickPlayer(service.retrieveSingleMessage(playerunreg, MessageKey.GUI_CAPTCHA_KICK_TIMEOUT)); timesLeft = 3; // Reset the attempt counter
timesLeft = 3; // Reset the attempt counter }
} }, finalTimeOut * 20L);
}, finalTimeOut * 20L);
});
} }
}); });
}); });