Browse Source

Fixed operation of slot-limits and other little improvements.

master
Stanislav Usenkov 9 years ago
parent
commit
a468117db9
  1. 32
      pom.xml
  2. 6
      src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java
  3. 37
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitEventListener.java
  4. 1
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java
  5. 4
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java
  6. 6
      src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java
  7. 6
      src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java

32
pom.xml

@ -1,21 +1,21 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>ru.simsonic</groupId> <groupId>ru.simsonic</groupId>
<artifactId>rscPermissions</artifactId> <artifactId>rscPermissions</artifactId>
<version>0.10.5b-SNAPSHOT</version> <version>0.10.5b-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>rscPermissions</name> <name>rscPermissions</name>
<url>https://github.com/SimSonic/rscPermissions/</url> <url>https://github.com/SimSonic/rscPermissions/</url>
<repositories> <repositories>
<!-- Sponge API --> <!-- Sponge API -->
<repository> <!--repository>
<id>sponge-repo</id> <id>sponge-repo</id>
<url>http://repo.spongepowered.org/maven/</url> <url>http://repo.spongepowered.org/maven/</url>
</repository> </repository-->
<!-- Bukkit API / Spigot API --> <!-- Bukkit API / Spigot API -->
<repository> <repository>
<id>spigotmc-repo</id> <id>spigotmc-repo</id>
@ -76,6 +76,13 @@
<version>1.10.2-R0.1-SNAPSHOT</version> <version>1.10.2-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- mcstats.org -->
<dependency>
<groupId>org.mcstats.bukkit</groupId>
<artifactId>metrics-lite</artifactId>
<version>R8-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- Reality_SC's libraries --> <!-- Reality_SC's libraries -->
<dependency> <dependency>
<groupId>ru.simsonic</groupId> <groupId>ru.simsonic</groupId>
@ -89,14 +96,7 @@
<version>2.2.2</version> <version>2.2.2</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- mcstats.org --> <!-- VaultAPI, WorldGaurg, Residence, etc. -->
<dependency>
<groupId>org.mcstats.bukkit</groupId>
<artifactId>metrics-lite</artifactId>
<version>R8-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- Integrations -->
<dependency> <dependency>
<!--groupId>net.milkbowl.vault</groupId--> <!--groupId>net.milkbowl.vault</groupId-->
<groupId>net.milkbowl.vault</groupId> <groupId>net.milkbowl.vault</groupId>
@ -184,15 +184,15 @@
<relocations> <relocations>
<relocation> <relocation>
<pattern>com.google.gson</pattern> <pattern>com.google.gson</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}.com-google-gson-shaded</shadedPattern> <shadedPattern>${project.groupId}.${project.artifactId}.SHADED-com-google-gson</shadedPattern>
</relocation> </relocation>
<relocation> <relocation>
<pattern>ru.simsonic.rscCommonsLibrary</pattern> <pattern>ru.simsonic.rscCommonsLibrary</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}.rscCommonsLibrary-shaded</shadedPattern> <shadedPattern>${project.groupId}.${project.artifactId}.SHADED-rscCommonsLibrary</shadedPattern>
</relocation> </relocation>
<relocation> <relocation>
<pattern>ru.simsonic.rscMinecraftLibrary</pattern> <pattern>ru.simsonic.rscMinecraftLibrary</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}.rscMinecraftLibrary-shaded</shadedPattern> <shadedPattern>${project.groupId}.${project.artifactId}.SHADED-rscMinecraftLibrary</shadedPattern>
</relocation> </relocation>
</relocations> </relocations>
</configuration> </configuration>

6
src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java

@ -32,7 +32,11 @@ public class RowInheritance implements Cloneable, Comparable<RowInheritance>
return; return;
} }
} }
instance = null; instance = "";
}
public String getParentWithInstance()
{
return this.parent + (instance.isEmpty() ? "" : "." + instance);
} }
@Override @Override
public RowInheritance clone() throws CloneNotSupportedException public RowInheritance clone() throws CloneNotSupportedException

37
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.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.server.ServerListPingEvent; import org.bukkit.event.server.ServerListPingEvent;
import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes;
import ru.simsonic.rscMinecraftLibrary.Bukkit.Tools; import ru.simsonic.rscMinecraftLibrary.Bukkit.Tools;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Phrases; import ru.simsonic.rscPermissions.Engine.Phrases;
@ -118,23 +119,26 @@ public class BukkitEventListener implements Listener
private void processLimitedSlotsLogin(AsyncPlayerPreLoginEvent event, ResolutionResult resolution) private void processLimitedSlotsLogin(AsyncPlayerPreLoginEvent event, ResolutionResult resolution)
{ {
boolean allowed = true; boolean allowed = true;
int freeSlots = rscp.getServer().getMaxPlayers() - Tools.getOnlinePlayers().size(); if(resolution.hasPermission("rscp.limits.*") == false)
for(Map.Entry<String, Integer> limit : slotLimits.entrySet())
{ {
// Ignore non-positive values int freeSlots = rscp.getServer().getMaxPlayers() - Tools.getOnlinePlayers().size();
if(limit.getValue() <= 0) for(Map.Entry<String, Integer> limit : slotLimits.entrySet())
continue;
boolean permission = resolution.hasPermission("rscp.limits." + limit.getKey());
if(permission)
{ {
allowed = true; // Ignore non-positive values
// "Harder" limit allows to skip "lighter" checks if(limit.getValue() <= 0)
if(freeSlots > limit.getValue()) continue;
break; boolean permission = resolution.hasPermission("rscp.limits." + limit.getKey());
} else { if(permission)
// Block otherwise {
if(freeSlots < limit.getValue()) allowed = true;
allowed = false; // "Harder" limit allows to skip "lighter" checks
if(freeSlots > limit.getValue())
break;
} else {
// Block otherwise
if(freeSlots < limit.getValue())
allowed = false;
}
} }
} }
if(allowed) if(allowed)
@ -142,7 +146,8 @@ public class BukkitEventListener implements Listener
event.allow(); event.allow();
return; 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) public void setMaintenanceMode(String mMode)
{ {

1
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java

@ -166,6 +166,7 @@ public class BukkitPluginConfiguration implements Settings
{ {
return bTreatAsteriskAsOP; return bTreatAsteriskAsOP;
} }
@Override
public boolean isUsingAncestorPrefixes() public boolean isUsingAncestorPrefixes()
{ {
return bUsingAncestorPrefixes; return bUsingAncestorPrefixes;

4
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java

@ -17,7 +17,7 @@ public class CommandLock
if(sender.hasPermission("rscp.lock")) if(sender.hasPermission("rscp.lock"))
{ {
final String mode = (args.length >= 2) ? args[1] : "default"; final String mode = (args.length >= 2) ? args[1] : "default";
rscp.bukkitListener.setMaintenanceMode(mode); rscp.listener.setMaintenanceMode(mode);
throw new CommandAnswerException(Phrases.MAINTENANCE_ON.toString()); throw new CommandAnswerException(Phrases.MAINTENANCE_ON.toString());
} }
} }
@ -25,7 +25,7 @@ public class CommandLock
{ {
if(sender.hasPermission("rscp.lock")) if(sender.hasPermission("rscp.lock"))
{ {
rscp.bukkitListener.setMaintenanceMode(null); rscp.listener.setMaintenanceMode(null);
throw new CommandAnswerException(Phrases.MAINTENANCE_OFF.toString()); throw new CommandAnswerException(Phrases.MAINTENANCE_OFF.toString());
} }
} }

6
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 static Logger consoleLog = Bukkit.getLogger();
public final Settings settings = new BukkitPluginConfiguration(this); 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 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 BackendJson localStorage = new BackendJson(getDataFolder());
public final DatabaseEditor connection = new DatabaseEditor(this); public final DatabaseEditor connection = new DatabaseEditor(this);
public final InternalCache internalCache = new InternalCache(); public final InternalCache internalCache = new InternalCache();
public final BukkitCommands commandHelper = new BukkitCommands(this); public final BukkitCommands commandHelper = new BukkitCommands(this);
public final BridgeForBukkitAPI bridgeForBukkit = new BridgeForBukkitAPI(this); public final BridgeForBukkitAPI bridgeForBukkit = new BridgeForBukkitAPI(this);
public final BukkitEventListener bukkitListener = new BukkitEventListener(this);
public final BukkitPermissionManager permissionManager = new BukkitPermissionManager(this); public final BukkitPermissionManager permissionManager = new BukkitPermissionManager(this);
public final BukkitRegionProviders regionListProvider = new BukkitRegionProviders(this); public final BukkitRegionProviders regionListProvider = new BukkitRegionProviders(this);
private final RegionUpdateObserver regionUpdateObserver = new RegionUpdateObserver(this); private final RegionUpdateObserver regionUpdateObserver = new RegionUpdateObserver(this);
@ -60,7 +60,7 @@ public final class BukkitPluginMain extends JavaPlugin
// Read settings and setup components // Read settings and setup components
settings.onEnable(); settings.onEnable();
updating.onEnable(); updating.onEnable();
bukkitListener.onEnable(); listener.onEnable();
internalCache.setDefaultGroup( internalCache.setDefaultGroup(
settings.getDefaultGroup(), settings.getDefaultGroup(),
settings.isDefaultForever(), settings.isDefaultForever(),
@ -86,7 +86,7 @@ public final class BukkitPluginMain extends JavaPlugin
consoleLog.log(Level.WARNING, "[rscp][Metrics] Exception: {0}", ex); consoleLog.log(Level.WARNING, "[rscp][Metrics] Exception: {0}", ex);
} }
// Register event's dispatcher // Register event's dispatcher
getServer().getPluginManager().registerEvents(bukkitListener, this); getServer().getPluginManager().registerEvents(listener, this);
regionUpdateObserver.registerListeners(); regionUpdateObserver.registerListeners();
// Integrate Vault and WEPIF // Integrate Vault and WEPIF
bridgeForBukkit.setupVault(); bridgeForBukkit.setupVault();

6
src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java

@ -121,9 +121,9 @@ public class InternalCache extends InternalStorage
if(isInheritanceApplicable(params, row)) if(isInheritanceApplicable(params, row))
{ {
params.parentEntity = row.entityParent; params.parentEntity = row.entityParent;
params.instantiator = (row.instance != null && !"".equals(row.instance)) params.instantiator = row.instance.isEmpty()
? row.instance ? instantiator
: instantiator; : row.instance;
intermediateResults.add(resolveParent(params)); intermediateResults.add(resolveParent(params));
} }
params.depth -= 1; params.depth -= 1;

Loading…
Cancel
Save