Fix Player Online check
This commit is contained in:
parent
a2f5a7917d
commit
e1c1d18d05
@ -1,11 +1,5 @@
|
|||||||
package fr.xephi.authme;
|
package fr.xephi.authme;
|
||||||
|
|
||||||
import fr.xephi.authme.settings.Settings;
|
|
||||||
import net.milkbowl.vault.permission.Permission;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.OfflinePlayer;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
@ -13,6 +7,13 @@ import java.util.concurrent.ExecutorService;
|
|||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import fr.xephi.authme.settings.Settings;
|
||||||
|
import net.milkbowl.vault.permission.Permission;
|
||||||
|
|
||||||
public class DataManager {
|
public class DataManager {
|
||||||
|
|
||||||
public AuthMe plugin;
|
public AuthMe plugin;
|
||||||
@ -110,7 +111,7 @@ public class DataManager {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
playerFile = new File(plugin.getServer().getWorldContainer() + File.separator + Settings.defaultWorld + File.separator + "players" + File.separator + player.getUniqueId() + ".dat");
|
playerFile = new File(plugin.getServer().getWorldContainer() + File.separator + Settings.defaultWorld + File.separator + "players" + File.separator + player.getUniqueId() + ".dat");
|
||||||
} catch(Exception ignore) {
|
} catch (Exception ignore) {
|
||||||
}
|
}
|
||||||
if (playerFile.exists()) {
|
if (playerFile.exists()) {
|
||||||
playerFile.delete();
|
playerFile.delete();
|
||||||
@ -135,8 +136,8 @@ public class DataManager {
|
|||||||
try {
|
try {
|
||||||
File playerFile = null;
|
File playerFile = null;
|
||||||
try {
|
try {
|
||||||
playerFile = new File(plugin.ess.getDataFolder() + File.separator + "userdata" + File.separator + plugin.getServer().getOfflinePlayer(name).getUniqueId() + ".yml");
|
playerFile = new File(plugin.ess.getDataFolder() + File.separator + "userdata" + File.separator + plugin.getServer().getOfflinePlayer(name).getUniqueId() + ".yml");
|
||||||
} catch(Exception ignore) {
|
} catch (Exception ignore) {
|
||||||
}
|
}
|
||||||
if (playerFile.exists()) {
|
if (playerFile.exists()) {
|
||||||
playerFile.delete();
|
playerFile.delete();
|
||||||
@ -155,7 +156,7 @@ public class DataManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void purgePermissions(List<String> cleared,
|
public synchronized void purgePermissions(List<String> cleared,
|
||||||
Permission permission) {
|
Permission permission) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (String name : cleared) {
|
for (String name : cleared) {
|
||||||
try {
|
try {
|
||||||
@ -175,6 +176,7 @@ public class DataManager {
|
|||||||
return true;
|
return true;
|
||||||
ExecutorService executor = Executors.newSingleThreadExecutor();
|
ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||||
Future<Boolean> result = executor.submit(new Callable<Boolean>() {
|
Future<Boolean> result = executor.submit(new Callable<Boolean>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized Boolean call() throws Exception {
|
public synchronized Boolean call() throws Exception {
|
||||||
for (OfflinePlayer op : Utils.getOnlinePlayers())
|
for (OfflinePlayer op : Utils.getOnlinePlayers())
|
||||||
@ -192,4 +194,13 @@ public class DataManager {
|
|||||||
executor.shutdown();
|
executor.shutdown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Player getOnlinePlayerLower(String name) {
|
||||||
|
name = name.toLowerCase();
|
||||||
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (player.getName().equalsIgnoreCase(name))
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -95,14 +95,14 @@ public class SendMailSSL {
|
|||||||
ConsoleLogger.showError("Unable to send new password as image! Using normal text! Dest: " + mail);
|
ConsoleLogger.showError("Unable to send new password as image! Using normal text! Dest: " + mail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Transport transport = session.getTransport("smtp");
|
Transport transport = session.getTransport("smtp");
|
||||||
message.setContent(multipart);
|
message.setContent(multipart);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
transport.connect(smtp, acc, password);
|
transport.connect(smtp, acc, password);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
ConsoleLogger.showError("Can't connect to your SMTP server! Aborting! Can't send recorvery email to " + mail);
|
ConsoleLogger.showError("Can't connect to your SMTP server! Aborting! Can't send recovery email to " + mail);
|
||||||
if (file != null)
|
if (file != null)
|
||||||
file.delete();
|
file.delete();
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -1,16 +1,11 @@
|
|||||||
package fr.xephi.authme.listener;
|
package fr.xephi.authme.listener;
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataOutput;
|
import java.util.ArrayList;
|
||||||
import com.google.common.io.ByteStreams;
|
import java.util.Arrays;
|
||||||
import fr.xephi.authme.AuthMe;
|
import java.util.List;
|
||||||
import fr.xephi.authme.ConsoleLogger;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import fr.xephi.authme.Utils;
|
import java.util.regex.PatternSyntaxException;
|
||||||
import fr.xephi.authme.cache.auth.PlayerAuth;
|
|
||||||
import fr.xephi.authme.cache.auth.PlayerCache;
|
|
||||||
import fr.xephi.authme.cache.limbo.LimboCache;
|
|
||||||
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
|
||||||
import fr.xephi.authme.settings.Messages;
|
|
||||||
import fr.xephi.authme.settings.Settings;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@ -23,13 +18,37 @@ import org.bukkit.event.block.SignChangeEvent;
|
|||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||||
|
import org.bukkit.event.player.PlayerBedEnterEvent;
|
||||||
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
|
import org.bukkit.event.player.PlayerFishEvent;
|
||||||
|
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.event.player.PlayerItemConsumeEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerKickEvent;
|
||||||
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
|
import org.bukkit.event.player.PlayerPickupItemEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
|
import org.bukkit.event.player.PlayerShearEntityEvent;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
import java.util.Arrays;
|
import com.google.common.io.ByteStreams;
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import fr.xephi.authme.AuthMe;
|
||||||
import java.util.regex.PatternSyntaxException;
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
|
import fr.xephi.authme.Utils;
|
||||||
|
import fr.xephi.authme.cache.auth.PlayerAuth;
|
||||||
|
import fr.xephi.authme.cache.auth.PlayerCache;
|
||||||
|
import fr.xephi.authme.cache.limbo.LimboCache;
|
||||||
|
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
||||||
|
import fr.xephi.authme.settings.Messages;
|
||||||
|
import fr.xephi.authme.settings.Settings;
|
||||||
|
|
||||||
public class AuthMePlayerListener implements Listener {
|
public class AuthMePlayerListener implements Listener {
|
||||||
|
|
||||||
@ -185,6 +204,7 @@ public class AuthMePlayerListener implements Listener {
|
|||||||
// Shedule login task so works after the prelogin
|
// Shedule login task so works after the prelogin
|
||||||
// (Fix found by Koolaid5000)
|
// (Fix found by Koolaid5000)
|
||||||
Bukkit.getScheduler().runTask(plugin, new Runnable() {
|
Bukkit.getScheduler().runTask(plugin, new Runnable() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
@ -201,28 +221,27 @@ public class AuthMePlayerListener implements Listener {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
public void onPreLogin(AsyncPlayerPreLoginEvent event) {
|
public void onPreLogin(AsyncPlayerPreLoginEvent event) {
|
||||||
final String name = event.getName().toLowerCase();
|
final String name = event.getName().toLowerCase();
|
||||||
final Player player = Bukkit.getServer().getPlayer(name);
|
final Player player = plugin.dataManager.getOnlinePlayerLower(name);
|
||||||
if (player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Check if forceSingleSession is set to true, so kick player that has
|
// Check if forceSingleSession is set to true, so kick player that has
|
||||||
// joined with same nick of online player
|
// joined with same nick of online player
|
||||||
if (Settings.isForceSingleSessionEnabled && plugin.dataManager.isOnline(player, name)) {
|
if (Settings.isForceSingleSessionEnabled) {
|
||||||
event.setKickMessage(m.send("same_nick")[0]);
|
event.setKickMessage(m.getString("same_nick"));
|
||||||
event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER);
|
event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER);
|
||||||
if (LimboCache.getInstance().hasLimboPlayer(name))
|
if (LimboCache.getInstance().hasLimboPlayer(name))
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName().toLowerCase());
|
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(name);
|
||||||
if (limbo != null && PlayerCache.getInstance().isAuthenticated(player.getName().toLowerCase())) {
|
if (limbo != null && PlayerCache.getInstance().isAuthenticated(name)) {
|
||||||
Utils.addNormal(player, limbo.getGroup());
|
Utils.addNormal(player, limbo.getGroup());
|
||||||
LimboCache.getInstance().deleteLimboPlayer(player.getName().toLowerCase());
|
LimboCache.getInstance().deleteLimboPlayer(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -244,8 +263,7 @@ public class AuthMePlayerListener implements Listener {
|
|||||||
if (event.getResult() != PlayerLoginEvent.Result.ALLOWED)
|
if (event.getResult() != PlayerLoginEvent.Result.ALLOWED)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Settings.countriesBlacklist.isEmpty() && !isAuthAvailable
|
if (!Settings.countriesBlacklist.isEmpty() && !isAuthAvailable && !plugin.authmePermissible(player, "authme.bypassantibot")) {
|
||||||
&& !plugin.authmePermissible(player, "authme.bypassantibot")) {
|
|
||||||
String code = Utils.getCountryCode(event.getAddress().getHostAddress());
|
String code = Utils.getCountryCode(event.getAddress().getHostAddress());
|
||||||
if (((code == null) || Settings.countriesBlacklist.contains(code))) {
|
if (((code == null) || Settings.countriesBlacklist.contains(code))) {
|
||||||
event.setKickMessage(m.send("country_banned")[0]);
|
event.setKickMessage(m.send("country_banned")[0]);
|
||||||
@ -253,8 +271,7 @@ public class AuthMePlayerListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Settings.enableProtection && !Settings.countries.isEmpty() && !isAuthAvailable
|
if (Settings.enableProtection && !Settings.countries.isEmpty() && !isAuthAvailable && !plugin.authmePermissible(player, "authme.bypassantibot")) {
|
||||||
&& !plugin.authmePermissible(player, "authme.bypassantibot")) {
|
|
||||||
String code = Utils.getCountryCode(event.getAddress().getHostAddress());
|
String code = Utils.getCountryCode(event.getAddress().getHostAddress());
|
||||||
if (((code == null) || !Settings.countries.contains(code))) {
|
if (((code == null) || !Settings.countries.contains(code))) {
|
||||||
event.setKickMessage(m.send("country_banned")[0]);
|
event.setKickMessage(m.send("country_banned")[0]);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user