7 changed files with 146 additions and 188 deletions
@ -0,0 +1,116 @@
|
||||
package ru.simsonic.rscPermissions.Bukkit; |
||||
import org.bukkit.Bukkit; |
||||
import org.bukkit.entity.Player; |
||||
import org.bukkit.event.EventHandler; |
||||
import org.bukkit.event.EventPriority; |
||||
import org.bukkit.event.Listener; |
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent; |
||||
import org.bukkit.event.player.PlayerExpChangeEvent; |
||||
import org.bukkit.event.player.PlayerKickEvent; |
||||
import org.bukkit.event.player.PlayerLevelChangeEvent; |
||||
import org.bukkit.event.player.PlayerLoginEvent; |
||||
import org.bukkit.event.player.PlayerQuitEvent; |
||||
import org.bukkit.event.server.ServerListPingEvent; |
||||
import ru.simsonic.rscPermissions.BukkitPluginMain; |
||||
import ru.simsonic.rscPermissions.InternalCache.ResolutionResult; |
||||
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes; |
||||
|
||||
public class BukkitEventListener implements Listener |
||||
{ |
||||
private final BukkitPluginMain rscp; |
||||
public BukkitEventListener(BukkitPluginMain plugin) |
||||
{ |
||||
this.rscp = plugin; |
||||
} |
||||
@EventHandler |
||||
public void onPlayerAsyncPreLogin(AsyncPlayerPreLoginEvent event) |
||||
{ |
||||
final ResolutionResult resolution = rscp.internalCache.resolvePlayer(new String[] |
||||
{ |
||||
event.getName(), |
||||
event.getUniqueId().toString(), |
||||
event.getAddress().getHostAddress(), |
||||
}, rscp.getServer().getServerId()); |
||||
processMaintenanceLogin(event, resolution); |
||||
} |
||||
@EventHandler(priority = EventPriority.LOWEST) |
||||
public void onPlayerLogin(PlayerLoginEvent event) |
||||
{ |
||||
rscp.permissionManager.recalculatePlayer(event.getPlayer()); |
||||
} |
||||
@EventHandler |
||||
public void onPlayerExp(PlayerLevelChangeEvent event) |
||||
{ |
||||
rscp.permissionManager.recalculatePlayer(event.getPlayer()); |
||||
} |
||||
@EventHandler |
||||
public void onPlayerLevel(PlayerExpChangeEvent event) |
||||
{ |
||||
rscp.permissionManager.recalculatePlayer(event.getPlayer()); |
||||
} |
||||
@EventHandler |
||||
public void onPlayerKick(PlayerKickEvent event) |
||||
{ |
||||
final Player player = event.getPlayer(); |
||||
rscp.permissionManager.removePlayer(player); |
||||
rscp.regionListProvider.removePlayer(player); |
||||
} |
||||
@EventHandler |
||||
public void onPlayerQuit(PlayerQuitEvent event) |
||||
{ |
||||
final Player player = event.getPlayer(); |
||||
rscp.permissionManager.removePlayer(player); |
||||
rscp.regionListProvider.removePlayer(player); |
||||
} |
||||
@org.bukkit.event.EventHandler |
||||
public void onServerPing(ServerListPingEvent event) |
||||
{ |
||||
if(rscp.settings.isInMaintenance()) |
||||
{ |
||||
final String motd = GenericChatCodes.processStringStatic( |
||||
"Server is under maintenance"); |
||||
event.setMotd(motd); |
||||
} |
||||
} |
||||
private void processMaintenanceLogin(AsyncPlayerPreLoginEvent event, ResolutionResult resolution) |
||||
{ |
||||
if("".equals(rscp.settings.getMaintenanceMode())) |
||||
{ |
||||
event.allow(); |
||||
return; |
||||
} |
||||
final String permissionMM = "rscp.maintenance." + (rscp.settings.getMaintenanceMode()); |
||||
final String permissionAll = "rscp.maintenance.*"; |
||||
if(resolution.hasPermission(permissionMM) || resolution.hasPermission(permissionAll)) |
||||
{ |
||||
event.allow(); |
||||
return; |
||||
} |
||||
final String kickMsg = GenericChatCodes.processStringStatic( |
||||
"{_YL}Server is in maintenance mode\nPlease try to connect later..."); |
||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_WHITELIST, kickMsg); |
||||
} |
||||
public void setMaintenanceMode(String mMode) |
||||
{ |
||||
rscp.settings.setMaintenanceMode(mMode); |
||||
if(!rscp.settings.isInMaintenance()) |
||||
return; |
||||
rscp.getServer().getScheduler().runTask(rscp, new Runnable() |
||||
{ |
||||
@Override |
||||
public void run() |
||||
{ |
||||
for(Player player : Bukkit.getServer().getOnlinePlayers()) |
||||
{ |
||||
if(player.hasPermission("rscp.maintenance.*")) |
||||
continue; |
||||
if(player.hasPermission("rscp.maintenance." + rscp.settings.getMaintenanceMode())) |
||||
continue; |
||||
final String kick = GenericChatCodes.processStringStatic( |
||||
"{_YL}Server is going into maintenance mode. Please connect later."); |
||||
player.kickPlayer(kick); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
} |
@ -1,100 +0,0 @@
|
||||
package ru.simsonic.rscPermissions.Bukkit; |
||||
import java.util.HashMap; |
||||
import java.util.UUID; |
||||
import org.bukkit.Bukkit; |
||||
import org.bukkit.entity.Player; |
||||
import org.bukkit.event.Listener; |
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent; |
||||
import org.bukkit.event.server.ServerListPingEvent; |
||||
import ru.simsonic.rscPermissions.BukkitPluginMain; |
||||
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes; |
||||
|
||||
public class BukkitMaintenance implements Listener |
||||
{ |
||||
private final BukkitPluginMain rscp; |
||||
public BukkitMaintenance(BukkitPluginMain rscp) |
||||
{ |
||||
this.rscp = rscp; |
||||
} |
||||
public void onEnable() |
||||
{ |
||||
rscp.getServer().getPluginManager().registerEvents(this, rscp); |
||||
} |
||||
@org.bukkit.event.EventHandler |
||||
public void onServerPing(ServerListPingEvent event) |
||||
{ |
||||
if(rscp.settings.isInMaintenance()) |
||||
{ |
||||
String motd = "Server is under maintenance"; |
||||
motd = rscp.getConfig().getString("language.maintenance.locked.default.motd", motd); |
||||
motd = rscp.getConfig().getString("language.maintenance.locked." + rscp.settings.getMaintenanceMode() + ".motd", motd); |
||||
motd = GenericChatCodes.processStringStatic(motd); |
||||
if(!"".equals(motd)) |
||||
event.setMotd(motd); |
||||
} |
||||
} |
||||
@org.bukkit.event.EventHandler |
||||
public void onAsyncPlayerPreLogin(AsyncPlayerPreLoginEvent event) |
||||
{ |
||||
if("".equals(rscp.settings.getMaintenanceMode())) |
||||
{ |
||||
event.allow(); |
||||
return; |
||||
} |
||||
final String permissionAll = "rscp.maintenance.*"; |
||||
final String permission_mm = "rscp.maintenance." + (rscp.settings.getMaintenanceMode()); |
||||
final HashMap<String, Boolean> permissions = new HashMap<>(); |
||||
try |
||||
{ |
||||
final String name = event.getName(); |
||||
rscp.internalCache.resolvePlayer(name, rscp.getServer().getServerId()); |
||||
// permissions.putAll(plugin.cache.mapPermissions.get(name));
|
||||
} catch(RuntimeException ex) { |
||||
} |
||||
try |
||||
{ |
||||
final UUID uuid = event.getUniqueId(); |
||||
final String userFriendlyUniqueId = uuid.toString().replace("-", "").toLowerCase(); |
||||
rscp.internalCache.resolvePlayer(userFriendlyUniqueId, rscp.getServer().getServerId()); |
||||
// permissions.putAll(plugin.cache.mapPermissions.get(userFriendlyUniqueId));
|
||||
} catch(RuntimeException | NoSuchMethodError ex) { |
||||
} |
||||
for(String permission : permissions.keySet()) |
||||
if(permission.equalsIgnoreCase(permission_mm) || permission.equalsIgnoreCase(permissionAll)) |
||||
{ |
||||
event.allow(); |
||||
return; |
||||
} |
||||
String kickMsg = "{_YL}Server is in maintenance mode\nPlease try to connect later..."; |
||||
kickMsg = rscp.getConfig().getString("language.maintenance.locked.default.motd", kickMsg); |
||||
kickMsg = rscp.getConfig().getString("language.maintenance.locked." + rscp.settings.getMaintenanceMode() + ".motd", kickMsg); |
||||
kickMsg = GenericChatCodes.processStringStatic(kickMsg); |
||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_WHITELIST, kickMsg); |
||||
} |
||||
public void setMaintenanceMode(String mMode) |
||||
{ |
||||
rscp.settings.setMaintenanceMode(mMode); |
||||
if(!rscp.settings.isInMaintenance()) |
||||
return; |
||||
rscp.getServer().getScheduler().scheduleSyncDelayedTask(rscp, new Runnable() |
||||
{ |
||||
@Override |
||||
public void run() |
||||
{ |
||||
for(Player player : Bukkit.getServer().getOnlinePlayers()) |
||||
if(player != null) |
||||
{ |
||||
if(player.hasPermission("rscp.maintenance.*")) |
||||
continue; |
||||
if(player.hasPermission("rscp.maintenance." + rscp.settings.getMaintenanceMode())) |
||||
continue; |
||||
String kick = "{_YL}Server is going into maintenance mode"; |
||||
kick = rscp.getConfig().getString("language.maintenance.locked.default.kick", kick); |
||||
kick = rscp.getConfig().getString("language.maintenance.locked." + rscp.settings.getMaintenanceMode() + ".kick", kick); |
||||
kick = GenericChatCodes.processStringStatic(kick); |
||||
player.kickPlayer(kick); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
} |
@ -1,57 +0,0 @@
|
||||
package ru.simsonic.rscPermissions.Bukkit; |
||||
import org.bukkit.event.EventHandler; |
||||
import org.bukkit.event.EventPriority; |
||||
import org.bukkit.event.Listener; |
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent; |
||||
import org.bukkit.event.player.PlayerExpChangeEvent; |
||||
import org.bukkit.event.player.PlayerKickEvent; |
||||
import org.bukkit.event.player.PlayerLevelChangeEvent; |
||||
import org.bukkit.event.player.PlayerLoginEvent; |
||||
import org.bukkit.event.player.PlayerQuitEvent; |
||||
import ru.simsonic.rscPermissions.BukkitPluginMain; |
||||
|
||||
public class PlayerEventsListener implements Listener |
||||
{ |
||||
private final BukkitPluginMain rscp; |
||||
public PlayerEventsListener(BukkitPluginMain plugin) |
||||
{ |
||||
this.rscp = plugin; |
||||
} |
||||
@EventHandler |
||||
public void onPlayerAsyncPreLogin(AsyncPlayerPreLoginEvent event) |
||||
{ |
||||
rscp.internalCache.resolvePlayer(new String[] |
||||
{ |
||||
event.getName(), |
||||
event.getUniqueId().toString(), |
||||
event.getAddress().getHostAddress(), |
||||
}, rscp.getServer().getServerId()); |
||||
} |
||||
@EventHandler(priority = EventPriority.LOWEST) |
||||
public void onPlayerLogin(PlayerLoginEvent event) |
||||
{ |
||||
rscp.permissionManager.resolvePlayer(event.getPlayer()); |
||||
} |
||||
@EventHandler |
||||
public void onPlayerExp(PlayerLevelChangeEvent event) |
||||
{ |
||||
rscp.permissionManager.resolvePlayer(event.getPlayer()); |
||||
} |
||||
@EventHandler |
||||
public void onPlayerLevel(PlayerExpChangeEvent event) |
||||
{ |
||||
rscp.permissionManager.resolvePlayer(event.getPlayer()); |
||||
} |
||||
@EventHandler |
||||
public void onPlayerKick(PlayerKickEvent event) |
||||
{ |
||||
rscp.permissionManager.removePlayer(event.getPlayer()); |
||||
rscp.regionListProvider.removePlayer(event.getPlayer()); |
||||
} |
||||
@EventHandler |
||||
public void onPlayerQuit(PlayerQuitEvent event) |
||||
{ |
||||
rscp.permissionManager.removePlayer(event.getPlayer()); |
||||
rscp.regionListProvider.removePlayer(event.getPlayer()); |
||||
} |
||||
} |
Loading…
Reference in new issue