diff --git a/pom.xml b/pom.xml index f6e1ce8..1bcc53b 100644 --- a/pom.xml +++ b/pom.xml @@ -1,21 +1,21 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - + ru.simsonic rscPermissions 0.10.5b-SNAPSHOT jar - + rscPermissions https://github.com/SimSonic/rscPermissions/ - + spigotmc-repo @@ -76,6 +76,13 @@ 1.10.2-R0.1-SNAPSHOT provided + + + org.mcstats.bukkit + metrics-lite + R8-SNAPSHOT + compile + ru.simsonic @@ -89,14 +96,7 @@ 2.2.2 compile - - - org.mcstats.bukkit - metrics-lite - R8-SNAPSHOT - compile - - + net.milkbowl.vault @@ -184,15 +184,15 @@ com.google.gson - ${project.groupId}.${project.artifactId}.com-google-gson-shaded + ${project.groupId}.${project.artifactId}.SHADED-com-google-gson ru.simsonic.rscCommonsLibrary - ${project.groupId}.${project.artifactId}.rscCommonsLibrary-shaded + ${project.groupId}.${project.artifactId}.SHADED-rscCommonsLibrary ru.simsonic.rscMinecraftLibrary - ${project.groupId}.${project.artifactId}.rscMinecraftLibrary-shaded + ${project.groupId}.${project.artifactId}.SHADED-rscMinecraftLibrary diff --git a/src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java b/src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java index dc7ef08..96eaf95 100644 --- a/src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java +++ b/src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java @@ -32,7 +32,11 @@ public class RowInheritance implements Cloneable, Comparable return; } } - instance = null; + instance = ""; + } + public String getParentWithInstance() + { + return this.parent + (instance.isEmpty() ? "" : "." + instance); } @Override public RowInheritance clone() throws CloneNotSupportedException diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitEventListener.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitEventListener.java index b049e29..c1631ce 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitEventListener.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitEventListener.java @@ -15,6 +15,7 @@ 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.rscMinecraftLibrary.Bukkit.GenericChatCodes; import ru.simsonic.rscMinecraftLibrary.Bukkit.Tools; import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.Engine.Phrases; @@ -118,23 +119,26 @@ public class BukkitEventListener implements Listener private void processLimitedSlotsLogin(AsyncPlayerPreLoginEvent event, ResolutionResult resolution) { boolean allowed = true; - int freeSlots = rscp.getServer().getMaxPlayers() - Tools.getOnlinePlayers().size(); - for(Map.Entry limit : slotLimits.entrySet()) + if(resolution.hasPermission("rscp.limits.*") == false) { - // Ignore non-positive values - if(limit.getValue() <= 0) - continue; - boolean permission = resolution.hasPermission("rscp.limits." + limit.getKey()); - if(permission) + int freeSlots = rscp.getServer().getMaxPlayers() - Tools.getOnlinePlayers().size(); + for(Map.Entry limit : slotLimits.entrySet()) { - allowed = true; - // "Harder" limit allows to skip "lighter" checks - if(freeSlots > limit.getValue()) - break; - } else { - // Block otherwise - if(freeSlots < limit.getValue()) - allowed = false; + // Ignore non-positive values + if(limit.getValue() <= 0) + continue; + boolean permission = resolution.hasPermission("rscp.limits." + limit.getKey()); + if(permission) + { + allowed = true; + // "Harder" limit allows to skip "lighter" checks + if(freeSlots > limit.getValue()) + break; + } else { + // Block otherwise + if(freeSlots < limit.getValue()) + allowed = false; + } } } if(allowed) @@ -142,7 +146,8 @@ public class BukkitEventListener implements Listener event.allow(); return; } - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_WHITELIST, Phrases.SERVER_IS_FULL.toString()); + final String kickMessage = GenericChatCodes.processStringStatic(Phrases.SERVER_IS_FULL.toString()); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_WHITELIST, kickMessage); } public void setMaintenanceMode(String mMode) { diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java index 37c7909..e4f4faf 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java @@ -166,6 +166,7 @@ public class BukkitPluginConfiguration implements Settings { return bTreatAsteriskAsOP; } + @Override public boolean isUsingAncestorPrefixes() { return bUsingAncestorPrefixes; diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java index c99cda6..b64868b 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java @@ -17,7 +17,7 @@ public class CommandLock if(sender.hasPermission("rscp.lock")) { final String mode = (args.length >= 2) ? args[1] : "default"; - rscp.bukkitListener.setMaintenanceMode(mode); + rscp.listener.setMaintenanceMode(mode); throw new CommandAnswerException(Phrases.MAINTENANCE_ON.toString()); } } @@ -25,7 +25,7 @@ public class CommandLock { if(sender.hasPermission("rscp.lock")) { - rscp.bukkitListener.setMaintenanceMode(null); + rscp.listener.setMaintenanceMode(null); throw new CommandAnswerException(Phrases.MAINTENANCE_OFF.toString()); } } diff --git a/src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java b/src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java index be51902..ffbcdd0 100644 --- a/src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java +++ b/src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java @@ -33,12 +33,12 @@ public final class BukkitPluginMain extends JavaPlugin public final static Logger consoleLog = Bukkit.getLogger(); public final Settings settings = new BukkitPluginConfiguration(this); public final BukkitUpdater updating = new BukkitUpdater(this, Settings.UPDATER_URL, Settings.CHAT_PREFIX, Settings.UPDATE_CMD); + public final BukkitEventListener listener = new BukkitEventListener(this); public final BackendJson localStorage = new BackendJson(getDataFolder()); public final DatabaseEditor connection = new DatabaseEditor(this); public final InternalCache internalCache = new InternalCache(); public final BukkitCommands commandHelper = new BukkitCommands(this); public final BridgeForBukkitAPI bridgeForBukkit = new BridgeForBukkitAPI(this); - public final BukkitEventListener bukkitListener = new BukkitEventListener(this); public final BukkitPermissionManager permissionManager = new BukkitPermissionManager(this); public final BukkitRegionProviders regionListProvider = new BukkitRegionProviders(this); private final RegionUpdateObserver regionUpdateObserver = new RegionUpdateObserver(this); @@ -60,7 +60,7 @@ public final class BukkitPluginMain extends JavaPlugin // Read settings and setup components settings.onEnable(); updating.onEnable(); - bukkitListener.onEnable(); + listener.onEnable(); internalCache.setDefaultGroup( settings.getDefaultGroup(), settings.isDefaultForever(), @@ -86,7 +86,7 @@ public final class BukkitPluginMain extends JavaPlugin consoleLog.log(Level.WARNING, "[rscp][Metrics] Exception: {0}", ex); } // Register event's dispatcher - getServer().getPluginManager().registerEvents(bukkitListener, this); + getServer().getPluginManager().registerEvents(listener, this); regionUpdateObserver.registerListeners(); // Integrate Vault and WEPIF bridgeForBukkit.setupVault(); diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java b/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java index da89ce8..fd8ba28 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java @@ -121,9 +121,9 @@ public class InternalCache extends InternalStorage if(isInheritanceApplicable(params, row)) { params.parentEntity = row.entityParent; - params.instantiator = (row.instance != null && !"".equals(row.instance)) - ? row.instance - : instantiator; + params.instantiator = row.instance.isEmpty() + ? instantiator + : row.instance; intermediateResults.add(resolveParent(params)); } params.depth -= 1;