Use intends to run BungeeCord tasks on a event in background

This commit is contained in:
games647
2016-05-03 16:14:38 +02:00
parent dfe37dfc1b
commit ffa5059c67
2 changed files with 45 additions and 48 deletions

View File

@ -33,15 +33,18 @@ public class PlayerConnectionListener implements Listener {
}
@EventHandler
public void onPreLogin(PreLoginEvent preLoginEvent) {
public void onPreLogin(final PreLoginEvent preLoginEvent) {
if (preLoginEvent.isCancelled()) {
return;
}
preLoginEvent.registerIntent(plugin);
ProxyServer.getInstance().getScheduler().runAsync(plugin, new Runnable() {
@Override
public void run() {
PendingConnection connection = preLoginEvent.getConnection();
String username = connection.getName();
//just enable it for activated users
try {
PlayerProfile playerProfile = plugin.getStorage().getProfile(username, true);
if (playerProfile != null) {
if (playerProfile.isPremium()) {
@ -62,6 +65,11 @@ public class PlayerConnectionListener implements Listener {
}
}
}
} finally {
preLoginEvent.completeIntent(plugin);
}
}
});
}
@EventHandler

View File

@ -9,7 +9,6 @@ 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;
@ -35,9 +34,6 @@ public class BungeeAuthHook implements BungeeAuthPlugin {
final Class<?>[] parameterTypes = new Class<?>[]{String.class, String.class};
final Object[] arguments = new Object[]{player.getName(), "online"};
ProxyServer.getInstance().getScheduler().runAsync(Main.plugin, new Runnable() {
@Override
public void run() {
try {
callProtected("setStatus", parameterTypes, arguments);
ListenerClass.movePlayer(player, false);
@ -48,8 +44,6 @@ public class BungeeAuthHook implements BungeeAuthPlugin {
Main.plugin.getLogger().severe("[BungeeAuth] Error force loging in player");
}
}
});
}
@Override
public boolean isRegistered(String playerName) {
@ -84,9 +78,6 @@ public class BungeeAuthHook implements BungeeAuthPlugin {
, 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);
//proparly not thread-safe
@ -95,8 +86,6 @@ public class BungeeAuthHook implements BungeeAuthPlugin {
Main.plugin.getLogger().severe("[BungeeAuth] Error when creating a new player in the Database");
}
}
});
}
//pail ;(
private void callProtected(String methodName, Class<?>[] parameterTypes, Object[] arguments) throws Exception {