This commit is contained in:
Xephi 2013-03-13 18:06:04 +01:00
parent 0dd048774e
commit 5462508357
3 changed files with 43 additions and 23 deletions

View File

@ -28,7 +28,7 @@
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
<version>2.7.11b1</version> <version>2.7.11b2</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>

View File

@ -29,6 +29,7 @@ import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.event.player.PlayerBedEnterEvent; import org.bukkit.event.player.PlayerBedEnterEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerDropItemEvent;
@ -77,6 +78,7 @@ public class AuthMePlayerListener implements Listener {
public static int gm = 0; public static int gm = 0;
public static HashMap<String, Integer> gameMode = new HashMap<String, Integer>(); public static HashMap<String, Integer> gameMode = new HashMap<String, Integer>();
public HashMap<String, Boolean> sessions = new HashMap<String, Boolean>();
private Utils utils = Utils.getInstance(); private Utils utils = Utils.getInstance();
private Messages m = Messages.getInstance(); private Messages m = Messages.getInstance();
public AuthMe plugin; public AuthMe plugin;
@ -564,6 +566,22 @@ public class AuthMePlayerListener implements Listener {
} }
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerPreLogin(AsyncPlayerPreLoginEvent event) {
if (event == null || event.getName() == null || event.getName().isEmpty()) return;
if (!Settings.isSessionsEnabled && !Settings.sessionExpireOnIpChange) return;
PlayerAuth auth = data.getAuth(event.getName().toLowerCase());
if (event.getAddress().getHostAddress() == auth.getIp()) {
return;
} else {
if (!plugin.getServer().getPlayer(event.getName()).isOnline()) {
this.sessions.put(event.getName().toLowerCase(), true);
}
}
}
@EventHandler(priority = EventPriority.LOWEST) @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerLogin(PlayerLoginEvent event) { public void onPlayerLogin(PlayerLoginEvent event) {
@ -699,28 +717,30 @@ public class AuthMePlayerListener implements Listener {
if((cur - lastLogin < timeout || timeout == 0) && !auth.getIp().equals("198.18.0.1") ) { if((cur - lastLogin < timeout || timeout == 0) && !auth.getIp().equals("198.18.0.1") ) {
if (auth.getNickname().equalsIgnoreCase(name) && auth.getIp().equals(ip) ) { if (!this.sessions.containsKey(name)) {
plugin.getServer().getPluginManager().callEvent(new SessionEvent(auth, true)); if (auth.getNickname().equalsIgnoreCase(name) && auth.getIp().equals(ip) ) {
if(PlayerCache.getInstance().getAuth(name) != null) { plugin.getServer().getPluginManager().callEvent(new SessionEvent(auth, true));
PlayerCache.getInstance().updatePlayer(auth); if(PlayerCache.getInstance().getAuth(name) != null) {
} else { PlayerCache.getInstance().updatePlayer(auth);
PlayerCache.getInstance().addPlayer(auth); } else {
} PlayerCache.getInstance().addPlayer(auth);
player.sendMessage(m._("valid_session")); }
return; player.sendMessage(m._("valid_session"));
} else { return;
if(Settings.sessionExpireOnIpChange && !player.isOnline()) { } else {
PlayerCache.getInstance().removePlayer(name); int gM = gameMode.get(name);
LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); player.setGameMode(GameMode.getByValue(gM));
} else { player.kickPlayer(m._("unvalid_session"));
int gM = gameMode.get(name); return;
player.setGameMode(GameMode.getByValue(gM)); }
player.kickPlayer(m._("unvalid_session")); } else {
return; //Player change his IP between 2 relog-in
} PlayerCache.getInstance().removePlayer(name);
} LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player));
this.sessions.remove(name);
}
} else { } else {
//Session is ended correctly
PlayerCache.getInstance().removePlayer(name); PlayerCache.getInstance().removePlayer(name);
LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player)); LimboCache.getInstance().addLimboPlayer(player , utils.removeAll(player));
} }

View File

@ -3,7 +3,7 @@ author: darkwarriros,Xephi
website: http://www.multiplayer-italia.com/ website: http://www.multiplayer-italia.com/
description: AuthMe prevents people, which aren't logged in, from doing stuff like placing blocks, moving, typing commands or seeing the inventory of the current player. description: AuthMe prevents people, which aren't logged in, from doing stuff like placing blocks, moving, typing commands or seeing the inventory of the current player.
main: uk.org.whoami.authme.AuthMe main: uk.org.whoami.authme.AuthMe
version: 2.7.11b1 version: 2.7.11b2
softdepend: [Vault, ChestShop, Spout, Multiverse-Core, Notifications, Citizens, CombatTag] softdepend: [Vault, ChestShop, Spout, Multiverse-Core, Notifications, Citizens, CombatTag]
commands: commands:
register: register: