Browse Source

Fixed operation of slot-limits and other little improvements.

master
Stanislav Usenkov 9 years ago
parent
commit
a468117db9
  1. 28
      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

28
pom.xml

@ -1,5 +1,5 @@
<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>
<groupId>ru.simsonic</groupId>
@ -12,10 +12,10 @@
<repositories>
<!-- Sponge API -->
<repository>
<!--repository>
<id>sponge-repo</id>
<url>http://repo.spongepowered.org/maven/</url>
</repository>
</repository-->
<!-- Bukkit API / Spigot API -->
<repository>
<id>spigotmc-repo</id>
@ -76,6 +76,13 @@
<version>1.10.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</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 -->
<dependency>
<groupId>ru.simsonic</groupId>
@ -89,14 +96,7 @@
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
<!-- mcstats.org -->
<dependency>
<groupId>org.mcstats.bukkit</groupId>
<artifactId>metrics-lite</artifactId>
<version>R8-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- Integrations -->
<!-- VaultAPI, WorldGaurg, Residence, etc. -->
<dependency>
<!--groupId>net.milkbowl.vault</groupId-->
<groupId>net.milkbowl.vault</groupId>
@ -184,15 +184,15 @@
<relocations>
<relocation>
<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>
<pattern>ru.simsonic.rscCommonsLibrary</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}.rscCommonsLibrary-shaded</shadedPattern>
<shadedPattern>${project.groupId}.${project.artifactId}.SHADED-rscCommonsLibrary</shadedPattern>
</relocation>
<relocation>
<pattern>ru.simsonic.rscMinecraftLibrary</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}.rscMinecraftLibrary-shaded</shadedPattern>
<shadedPattern>${project.groupId}.${project.artifactId}.SHADED-rscMinecraftLibrary</shadedPattern>
</relocation>
</relocations>
</configuration>

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

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

1
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;

4
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());
}
}

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 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();

6
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;

Loading…
Cancel
Save