forked from TuxCoding/FastLogin
Optimize performance and thread-safety
This commit is contained in:
+6
@@ -6,6 +6,9 @@ import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
|
||||
import java.util.UUID;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.chat.BaseComponent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
|
||||
import net.md_5.bungee.api.connection.PendingConnection;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
@@ -67,6 +70,9 @@ public class PlayerConnectionListener implements Listener {
|
||||
BungeeAuthPlugin authPlugin = plugin.getBungeeAuthPlugin();
|
||||
if (authPlugin != null) {
|
||||
authPlugin.forceLogin(player);
|
||||
BaseComponent loginMessage = new TextComponent("Auto login");
|
||||
loginMessage.setColor(ChatColor.DARK_GREEN);
|
||||
player.sendMessage(loginMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+50
-22
@@ -4,11 +4,13 @@ import java.lang.reflect.Method;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import me.vik1395.BungeeAuth.ListenerClass;
|
||||
import me.vik1395.BungeeAuth.Main;
|
||||
import me.vik1395.BungeeAuth.Password.PasswordHandler;
|
||||
import me.vik1395.BungeeAuth.Tables;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
|
||||
@@ -25,22 +27,34 @@ public class BungeeAuthHook implements BungeeAuthPlugin {
|
||||
private final Tables databaseConnection = new Tables();
|
||||
|
||||
@Override
|
||||
public void forceLogin(ProxiedPlayer player) {
|
||||
public void forceLogin(final ProxiedPlayer player) {
|
||||
//https://github.com/MatteCarra/BungeeAuth/blob/master/src/me/vik1395/BungeeAuth/Login.java#L92-95
|
||||
Main.plonline.add(player.getName());
|
||||
try {
|
||||
//renamed from ct to databaseConnection
|
||||
|
||||
//renamed from ct to databaseConnection
|
||||
// databaseConnection.setStatus(player.getName(), "online");
|
||||
final Class<?>[] parameterTypes = new Class<?>[]{String.class, String.class};
|
||||
final Object[] arguments = new Object[]{player.getName(), "online"};
|
||||
|
||||
Class<?>[] parameterTypes = new Class<?>[] {String.class, String.class};
|
||||
Object[] arguments = new Object[] {player.getName(), "online"};
|
||||
callProtected("setStatus", parameterTypes, arguments);
|
||||
ProxyServer.getInstance().getScheduler().runAsync(Main.plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
callProtected("setStatus", parameterTypes, arguments);
|
||||
ListenerClass.movePlayer(player, false);
|
||||
|
||||
ListenerClass.movePlayer(player, false);
|
||||
ListenerClass.prelogin.get(player.getName()).cancel();
|
||||
} catch (Exception ex) {
|
||||
Main.plugin.getLogger().severe("[BungeeAuth] Error force loging in player");
|
||||
}
|
||||
ProxyServer.getInstance().getScheduler().schedule(Main.plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
//not thread-safe
|
||||
ListenerClass.prelogin.get(player.getName()).cancel();
|
||||
}
|
||||
}, 0, TimeUnit.SECONDS);
|
||||
} catch (Exception ex) {
|
||||
Main.plugin.getLogger().severe("[BungeeAuth] Error force loging in player");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -51,7 +65,7 @@ public class BungeeAuthHook implements BungeeAuthPlugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceRegister(ProxiedPlayer player, String password) {
|
||||
public void forceRegister(final ProxiedPlayer player, String password) {
|
||||
//https://github.com/MatteCarra/BungeeAuth/blob/master/src/me/vik1395/BungeeAuth/Register.java#L102
|
||||
PasswordHandler ph = new PasswordHandler();
|
||||
Random rand = new Random();
|
||||
@@ -68,18 +82,32 @@ public class BungeeAuthHook implements BungeeAuthPlugin {
|
||||
String hash = ph.newHash(Pw, pType);
|
||||
|
||||
//creates a new SQL entry with the player's details.
|
||||
try {
|
||||
//renamed t to databaseConnection
|
||||
|
||||
//renamed t to databaseConnection
|
||||
// databaseConnection.newPlayerEntry(player.getName(), hash, pType, "", lastip, regdate, lastip, lastseen);
|
||||
|
||||
Class<?>[] parameterTypes = new Class<?>[] {String.class, String.class, String.class, String.class
|
||||
, String.class, String.class, String.class, String.class};
|
||||
Object[] arguments = new Object[] {player.getName(), hash, pType, "", lastip, regdate, lastip, lastseen};
|
||||
callProtected("newPlayerEntry", parameterTypes, arguments);
|
||||
forceLogin(player);
|
||||
} catch (Exception ex) {
|
||||
Main.plugin.getLogger().severe("[BungeeAuth] Error when creating a new player in the MySQL Database");
|
||||
}
|
||||
final Class<?>[] parameterTypes = new Class<?>[] {String.class, String.class, String.class, String.class
|
||||
, String.class, String.class, String.class, String.class};
|
||||
final Object[] arguments = new Object[] {player.getName(), hash, pType, "", lastip, regdate, lastip, lastseen};
|
||||
|
||||
ProxyServer.getInstance().getScheduler().runAsync(Main.plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
callProtected("newPlayerEntry", parameterTypes, arguments);
|
||||
|
||||
ProxyServer.getInstance().getScheduler().schedule(Main.plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
//proparly not thread-safe
|
||||
forceLogin(player);
|
||||
}
|
||||
}, 0, TimeUnit.SECONDS);
|
||||
} catch (Exception ex) {
|
||||
Main.plugin.getLogger().severe("[BungeeAuth] Error when creating a new player in the Database");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//pail ;(
|
||||
|
||||
Reference in New Issue
Block a user