Browse Source

Added methods for inserting objects into database.

master
Stanislav Usenkov 9 years ago
parent
commit
2d6141c264
  1. 6
      src/main/java/ru/simsonic/rscPermissions/API/Destination.java
  2. 4
      src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java
  3. 14
      src/main/java/ru/simsonic/rscPermissions/API/Settings.java
  4. 6
      src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
  5. 4
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java
  6. 2
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  7. 9
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
  8. 124
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandGroup.java
  9. 6
      src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java
  10. 99
      src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java
  11. 61
      src/main/java/ru/simsonic/rscPermissions/Engine/CommandUtilities.java
  12. 22
      src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java
  13. 2
      src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java
  14. 54
      src/main/resources/languages/english.yml
  15. 54
      src/main/resources/languages/russian.yml

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

@ -31,7 +31,7 @@ public class Destination
if(this.world == null || this.world.isEmpty() || "*".equals(this.world))
return true;
final String instantiated = (instantiator != null && !instantiator.isEmpty())
? this.world.replace(Settings.instantiator, instantiator)
? this.world.replace(Settings.INSTANTIATOR, instantiator)
: this.world;
return wildcardTest(world, instantiated);
}
@ -40,7 +40,7 @@ public class Destination
if(this.region == null || "".equals(this.region) || "*".equals(this.region))
return true;
final String instantiated = (instantiator != null && !"".equals(instantiator))
? this.region.replace(Settings.instantiator, instantiator)
? this.region.replace(Settings.INSTANTIATOR, instantiator)
: this.region;
for(String regionId : regions)
if(wildcardTest(regionId, instantiated))
@ -52,7 +52,7 @@ public class Destination
if(this.region == null || "".equals(this.region) || "*".equals(this.region))
return true;
final String instantiated = (instantiator != null && !"".equals(instantiator))
? this.region.replace(Settings.instantiator, instantiator)
? this.region.replace(Settings.INSTANTIATOR, instantiator)
: this.region;
for(String regionId : regions)
if(wildcardTest(regionId, instantiated))

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

@ -23,10 +23,10 @@ public class RowInheritance implements Cloneable, Comparable<RowInheritance>
{
if(parent != null)
{
final String[] splitted = parent.split(Settings.separatorRegExp);
final String[] splitted = parent.split(Settings.SEPARATOR_REGEXP);
if(splitted.length > 1)
{
parent = GenericChatCodes.glue(Arrays.copyOf(splitted, splitted.length - 1), Settings.separator);
parent = GenericChatCodes.glue(Arrays.copyOf(splitted, splitted.length - 1), Settings.SEPARATOR);
instance = splitted[splitted.length - 1];
return;
}

14
src/main/java/ru/simsonic/rscPermissions/API/Settings.java

@ -5,13 +5,13 @@ import ru.simsonic.rscCommonsLibrary.ConnectionMySQL.ConnectionParams;
public interface Settings
{
public static final String updaterURL = "http://simsonic.github.io/rscPermissions/latest.json";
public static final String chatPrefix = "{GOLD}[rscp] {_LS}";
public static final String separator = ".";
public static final String separatorRegExp = "\\.";
public static final String instantiator = "?";
public static final String textInheriter = "%";
public static final char groupLevelTab = '┏';
public static final String UPDATER_URL = "http://simsonic.github.io/rscPermissions/latest.json";
public static final String CHAT_PREFIX = "{GOLD}[rscp] {_LS}";
public static final String SEPARATOR = ".";
public static final String SEPARATOR_REGEXP = "\\.";
public static final String INSTANTIATOR = "?";
public static final String TEXT_INHERITER = "%";
public static final char GROUP_LEVEL_TAB = '┏';
public void onLoad();
public void onEnable();
public String getDefaultGroup();

6
src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java

@ -86,7 +86,7 @@ public class BridgeForBukkitAPI
{
if(rscp.permissionManager.isConsoleDebugging())
{
final StringBuilder sb = new StringBuilder(Settings.chatPrefix).append("[DEBUG] {_LS}").append(info);
final StringBuilder sb = new StringBuilder(Settings.CHAT_PREFIX).append("[DEBUG] {_LS}").append(info);
rscp.getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(sb.toString()));
}
}
@ -94,7 +94,7 @@ public class BridgeForBukkitAPI
{
if(rscp.permissionManager.isConsoleDebugging())
{
final StringBuilder sb = new StringBuilder(Settings.chatPrefix);
final StringBuilder sb = new StringBuilder(Settings.CHAT_PREFIX);
sb.append("[DEBUG] An API method was invoked from the path:").append(System.lineSeparator());
for(StackTraceElement ste : Thread.currentThread().getStackTrace())
{
@ -102,7 +102,7 @@ public class BridgeForBukkitAPI
if(!className.equals(BridgeForBukkitAPI.class.getName())
&& !className.equals(Thread.class.getName())
)
sb.append(Settings.chatPrefix).append("[DEBUG] ")
sb.append(Settings.CHAT_PREFIX).append("[DEBUG] ")
.append(className.startsWith(BukkitPluginMain.class.getPackage().getName()) ? "{_LG}" : "{_LS}")
.append(ste.toString())
.append(System.lineSeparator());

4
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java

@ -39,7 +39,7 @@ public class BukkitDatabaseFetcher extends RestartableThread
public synchronized void run()
{
rscp.getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(
(Settings.chatPrefix + Phrases.FETCHED_REMOTE_DB.toString())
(Settings.CHAT_PREFIX + Phrases.FETCHED_REMOTE_DB.toString())
.replace("{:E}", String.valueOf(contents.entities.length))
.replace("{:P}", String.valueOf(contents.permissions.length))
.replace("{:I}", String.valueOf(contents.inheritance.length))));
@ -65,7 +65,7 @@ public class BukkitDatabaseFetcher extends RestartableThread
public void run()
{
for(CommandSender debugger : debuggers)
debugger.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix
debugger.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX
+ "Database has been fetched in " + queryTime + " milliseconds."));
}
});

2
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java

@ -121,7 +121,7 @@ public class BukkitPermissionManager extends RestartableThread
player.setOp((asterisk != null) ? asterisk : false);
// Show debugging information
if(isDebugging(player))
player.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix
player.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX
+ "[DEBUG] Inheritances list: {_LG}" + Arrays.toString(result.getDeorderedGroups())
+ "{_LS}; you have total {_LG}" + attachment.getPermissions().size()
+ "{_LS} permissions."));

9
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java

@ -16,6 +16,7 @@ public class BukkitCommands
{
private final BukkitPluginMain rscp;
private final CommandUser cmdUser;
private final CommandGroup cmdGroup;
private final CommandLock cmdLock;
private final CommandFetch cmdFetch;
private final CommandDebug cmdDebug;
@ -26,6 +27,7 @@ public class BukkitCommands
{
this.rscp = plugin;
cmdUser = new CommandUser(rscp);
cmdGroup = new CommandGroup(rscp);
cmdLock = new CommandLock(rscp);
cmdFetch = new CommandFetch(rscp);
cmdDebug = new CommandDebug(rscp);
@ -50,9 +52,9 @@ public class BukkitCommands
@Override
public void run()
{
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX
+ "Migration from PermissionsEx (MySQL backend) done!"));
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX
+ "Check the latest database row for new data."));
}
});
@ -123,6 +125,9 @@ public class BukkitCommands
case "user":
cmdUser.onUserCommandHub(sender, args);
return;
case "group":
cmdGroup.onGroupCommandHub(sender, args);
return;
case "lock":
cmdLock.executeLock(sender, args);
return;

124
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandGroup.java

@ -0,0 +1,124 @@
package ru.simsonic.rscPermissions.Bukkit.Commands;
import java.util.ArrayList;
import org.bukkit.command.CommandSender;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Backends.DatabaseTransaction;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
public class CommandGroup
{
private final BukkitPluginMain rscp;
CommandGroup(BukkitPluginMain plugin)
{
this.rscp = plugin;
}
public void onGroupCommandHub(CommandSender sender, String[] args) throws CommandAnswerException
{
/*
/rscp - command
group - 0
<entity> - 1
*/
if(sender.hasPermission("rscp.admin"))
{
/*
if(args.length < 3)
return;
final Player player = BukkitUtilities.findOnlinePlayer(args[1]);
if(player != null)
args[1] = player.getName();
final ResolutionResult result = (player != null)
? rscp.permissionManager.getResult(player)
: rscp.permissionManager.getResult(args[1]);
switch(args[2].toLowerCase())
{
case "prefix":
case "p":
viewPrefix(result, args[1]);
break;
case "suffix":
case "s":
viewSuffix(result, args[1]);
break;
case "listpermissions":
case "lp":
listPermissions(result, args[1]);
break;
case "listgroups":
case "lg":
listGroups(result, args[1]);
break;
case "addgroup":
case "ag":
// TO DO HERE
addGroup(result, args[1], null, null, null);
break;
case "removegroup":
case "rg":
// TO DO HERE
removeGroup(result, args[1], null);
break;
default:
break;
}
*/
} else
throw new CommandAnswerException("Not enough permissions.");
}
/*
private void viewPrefix(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated prefix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.prefix + "{_R}\"");
throw new CommandAnswerException(answer);
}
private void viewSuffix(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated suffix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.suffix + "{_R}\"");
throw new CommandAnswerException(answer);
}
private void listPermissions(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Permission list for user {_YL}" + user + "{_LS}:");
final ArrayList<String> sorted_keys = new ArrayList<>(result.permissions.keySet());
Collections.sort(sorted_keys);
for(String perm : sorted_keys)
answer.add((result.permissions.get(perm) ? "{_LG}" : "{_LR}") + perm);
throw new CommandAnswerException(answer);
}
private void listGroups(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Group list for user {_YL}" + user + "{_LS}:");
for(String group : result.getOrderedGroups())
answer.add("{_LG}" + group);
throw new CommandAnswerException(answer);
}
*/
private void addGroup(ResolutionResult result, String group, String parent, String destination, Integer seconds) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
final DatabaseTransaction databaseTransaction = new DatabaseTransaction(rscp);
databaseTransaction.apply();
throw new CommandAnswerException(answer);
}
private void removeGroup(ResolutionResult result, String group, String parent) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
throw new CommandAnswerException(answer);
}
}

6
src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java

@ -31,7 +31,7 @@ public final class BukkitPluginMain extends JavaPlugin
{
public static final Logger consoleLog = Bukkit.getLogger();
public final Settings settings = new BukkitPluginConfiguration(this);
public final BukkitUpdater updating = new BukkitUpdater(this, Settings.updaterURL, Settings.chatPrefix);
public final BukkitUpdater updating = new BukkitUpdater(this, Settings.UPDATER_URL, Settings.CHAT_PREFIX);
public final BackendJson localStorage = new BackendJson(getDataFolder());
public final BackendDatabase connection = new BackendDatabase(consoleLog);
public final InternalCache internalCache = new InternalCache();
@ -67,7 +67,7 @@ public final class BukkitPluginMain extends JavaPlugin
contents.filterServerId(getServer().getServerId()).filterLifetime();
internalCache.fill(contents);
getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(
(Settings.chatPrefix + Phrases.FETCHED_LOCAL_CACHE.toString())
(Settings.CHAT_PREFIX + Phrases.FETCHED_LOCAL_CACHE.toString())
.replace("{:E}", String.valueOf(contents.entities.length))
.replace("{:P}", String.valueOf(contents.permissions.length))
.replace("{:I}", String.valueOf(contents.inheritance.length))));
@ -153,7 +153,7 @@ public final class BukkitPluginMain extends JavaPlugin
}
} catch(CommandAnswerException ex) {
for(String answer : ex.getMessageArray())
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix + answer));
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + answer));
}
return true;
}

99
src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java

@ -3,6 +3,8 @@ package ru.simsonic.rscPermissions.Engine.Backends;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import ru.simsonic.rscCommonsLibrary.ConnectionMySQL;
@ -163,4 +165,101 @@ public class BackendDatabase extends ConnectionMySQL
setupQueryTemplate("{ID}", Long.toString(id));
executeUpdateT("DELETE FROM `{DATABASE}`.`{PREFIX}inheritance` WHERE `id` = '{ID}';");
}
public synchronized void insertEntity(
Long id,
String entity, EntityType type,
String prefix, String suffix, Integer lifetime)
{
setupQueryTemplate("{TABLE}", "entities");
final Map<String, String> fields = new HashMap<>();
// Required fields
fields.put("entity", quoteValue(entity));
fields.put("entity_type", type.equals(EntityType.PLAYER) ? "b'1'" : "b'0'");
// Optional fields
if(id != null)
fields.put("id", Long.toString(id));
if(prefix != null)
fields.put("prefix", quoteValue(prefix));
if(suffix != null)
fields.put("suffix", quoteValue(suffix));
if(lifetime != null)
fields.put("lifetime", lifetimeToValue(lifetime));
insertRow(fields);
}
public synchronized void insertPermissions(
Long id,
String entity, EntityType type,
String permission, boolean value,
String destination, Integer expirience, Integer lifetime)
{
setupQueryTemplate("{TABLE}", "permissions");
final Map<String, String> fields = new HashMap<>();
// Required fields
fields.put("entity", quoteValue(entity));
fields.put("entity_type", type.equals(EntityType.PLAYER) ? "b'1'" : "b'0'");
fields.put("permission", quoteValue(permission));
fields.put("value", value ? "b'1'" : "b'0'");
// Optional fields
if(id != null)
fields.put("id", Long.toString(id));
if(destination != null)
fields.put("destination", quoteValue(destination));
if(expirience != null)
fields.put("expirience", Integer.toString(expirience));
if(lifetime != null)
fields.put("lifetime", lifetimeToValue(lifetime));
insertRow(fields);
}
public synchronized void insertInheritance(
Long id,
String entity, String parent, EntityType type, Integer priority,
String destination, Integer expirience, Integer lifetime)
{
setupQueryTemplate("{TABLE}", "inheritance");
final Map<String, String> fields = new HashMap<>();
// Required fields
fields.put("entity", quoteValue(entity));
fields.put("parent", quoteValue(parent));
fields.put("inheritance_type", type.equals(EntityType.PLAYER) ? "b'1'" : "b'0'");
// Optional fields
if(id != null)
fields.put("id", Long.toString(id));
if(priority != null)
fields.put("inheritance_priority", Integer.toString(priority));
if(destination != null)
fields.put("destination", quoteValue(destination));
if(expirience != null)
fields.put("expirience", Integer.toString(expirience));
if(lifetime != null)
fields.put("lifetime", lifetimeToValue(lifetime));
insertRow(fields);
}
private String quoteValue(String value)
{
return new StringBuilder("'").append(value).append("'").toString();
}
private String lifetimeToValue(int lifetime)
{
if(lifetime < 0)
return "NULL";
return new StringBuilder("NOW() + INTERVAL ").append(lifetime).append(" SECOND").toString();
}
private void insertRow(Map<String, String> fields)
{
if(fields.isEmpty())
return;
final StringBuilder sbf = new StringBuilder();
final StringBuilder sbv = new StringBuilder();
final String sep = ", ";
for(Map.Entry<String, String> entry : fields.entrySet())
{
sbf.append("`").append(entry.getKey()).append("`").append(sep);
sbv.append(entry.getValue()).append(sep);
}
sbf.setLength(sbf.length() - sep.length());
sbv.setLength(sbv.length() - sep.length());
setupQueryTemplate("{FIELDS}", sbf.toString());
setupQueryTemplate("{VALUES}", sbv.toString());
executeUpdateT("INSERT INTO `{DATABASE}`.`{PREFIX}{TABLE}` ({FIELDS}) VALUES ({VALUES});");
}
}

61
src/main/java/ru/simsonic/rscPermissions/Engine/CommandUtilities.java

@ -1,7 +1,68 @@
package ru.simsonic.rscPermissions.Engine;
import ru.simsonic.rscCommonsLibrary.TimeIntervalParser;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.API.Destination;
public class CommandUtilities
{
public static class CommandParams
{
public Integer expirience;
public Destination destination;
public Integer lifetime;
}
public static CommandParams parseCommandParams(String[] args) throws CommandAnswerException
{
// /rscp <target> <action> <object> [params]
final CommandParams result = new CommandParams();
for(int index = 0; index < args.length && args[index] != null; index += 1)
{
final boolean isLastArg = (index != args.length - 1);
if(args[index] == null)
break;
switch(args[index].toLowerCase())
{
case "":
break;
case "e":
case "exp":
case "expirience":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
try
{
result.expirience = Integer.parseInt(args[index + 1]);
} catch(NumberFormatException ex) {
throw new CommandAnswerException("NumberFormatException: " + args[index + 1]);
} catch(NullPointerException ex) {
throw new CommandAnswerException("NullPointerException: args #" + (index + 1));
}
index += 1;
break;
case "d":
case "dest":
case "destination":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
if(args[index + 1] == null || "".equals(args[index + 1]))
throw new CommandAnswerException("NotEnoughArguments: args #" + (index + 1));
result.destination = Destination.parseDestination(args[index + 1]);
break;
case "l":
case "lifetime":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
result.lifetime = TimeIntervalParser.parseTimeInterval(args[index + 1]);
if(result.lifetime < 0)
result.lifetime = Integer.MAX_VALUE;
break;
default:
throw new CommandAnswerException("UnknownCommandParam: " + args[index]);
}
}
return result;
}
public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException
{
if(arg == null || "".equals(arg))

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

@ -23,8 +23,8 @@ public class InternalCache
private final HashMap<String, RowEntity> entities_g = new HashMap<>();
private final HashMap<String, RowEntity> entities_u = new HashMap<>();
private final RowInheritance defaultInheritance = new RowInheritance();
private boolean alwaysInheritDefaultGroup = false;
private boolean groupsInheritParentPrefixes = true;
private boolean alwaysInheritDefaultGroup = false;
private boolean groupsInheritParentPrefixes = true;
private RowEntity implicit_g;
private RowEntity implicit_u;
public void setDefaultGroup(String defaultGroup, boolean alwaysInheritDefaultGroup, boolean groupsInheritParentPrefixes)
@ -243,7 +243,7 @@ public class InternalCache
}
params.depth -= 1;
params.groupList.add(depthPrefix(params.depth) + currentParent.entity
+ ("".equals(instantiator) ? "" : Settings.separator + instantiator));
+ ("".equals(instantiator) ? "" : Settings.SEPARATOR + instantiator));
// Prefixes and suffixes
params.parentEntity = currentParent;
params.instantiator = instantiator;
@ -259,7 +259,7 @@ public class InternalCache
if(depth > 0)
{
final char[] levelParent = new char[depth];
levelParent[depth - 1] = Settings.groupLevelTab;
levelParent[depth - 1] = Settings.GROUP_LEVEL_TAB;
return new String(levelParent).replace('\0', ' ');
}
return "";
@ -271,9 +271,9 @@ public class InternalCache
result.prefix = params.parentEntity.prefix;
result.suffix = params.parentEntity.suffix;
if(result.prefix == null || "".equals(result.prefix))
result.prefix = (gipp ? Settings.textInheriter : "");
result.prefix = (gipp ? Settings.TEXT_INHERITER : "");
if(result.suffix == null || "".equals(result.suffix))
result.suffix = (gipp ? Settings.textInheriter : "");
result.suffix = (gipp ? Settings.TEXT_INHERITER : "");
final StringBuilder sbp = new StringBuilder();
final StringBuilder sbs = new StringBuilder();
for(ResolutionResult inherited : intermediate)
@ -283,10 +283,10 @@ public class InternalCache
if(inherited.suffix != null)
sbs.append(inherited.suffix);
}
result.prefix = result.prefix.replace(Settings.textInheriter, sbp.toString());
result.suffix = result.suffix.replace(Settings.textInheriter, sbs.toString());
result.prefix = result.prefix.replace(Settings.instantiator, params.instantiator);
result.suffix = result.suffix.replace(Settings.instantiator, params.instantiator);
result.prefix = result.prefix.replace(Settings.TEXT_INHERITER, sbp.toString());
result.suffix = result.suffix.replace(Settings.TEXT_INHERITER, sbs.toString());
result.prefix = result.prefix.replace(Settings.INSTANTIATOR, params.instantiator);
result.suffix = result.suffix.replace(Settings.INSTANTIATOR, params.instantiator);
return result;
}
private void processPermissions(ResolutionParams params, List<RowPermission> permissions)
@ -294,7 +294,7 @@ public class InternalCache
for(RowPermission row : permissions)
if(isPermissionApplicable(params, row))
params.finalPerms.put(
row.permission.replace(Settings.instantiator, params.instantiator),
row.permission.replace(Settings.INSTANTIATOR, params.instantiator),
row.value);
}
private boolean isPermissionApplicable(ResolutionParams params, RowPermission row)

2
src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java

@ -40,7 +40,7 @@ public class ResolutionResult
public String[] getDeorderedGroups()
{
final ArrayList<String> list = new ArrayList(groups.size());
final String separator = new String(new char[] { Settings.groupLevelTab });
final String separator = new String(new char[] { Settings.GROUP_LEVEL_TAB });
for(String group : groups)
{
String[] splitted = group.split(separator);

54
src/main/resources/languages/english.yml

@ -9,33 +9,33 @@ generic:
maintenance-on: "{_YL}Server is closed for maintenance now."
maintenance-off: "{_YL}Server is open for players now."
integration:
vault-yes: "{_LG}Vault was found and integrated."
vault-no: "{_LR}There is no Vault found. Vault is highly recommended to be installed on your server."
worldedit-yes: "{_LG}WorldEdit (WEPIF) was found and integrated."
worldedit-no: "{_YL}WorldEdit (WEPIF) was not found."
worldguard-yes: "{_LG}WorldGuard was found and integrated."
worldguard-no: "{_YL}WorldGuard was not found."
worldguard-old: "{_LR}WorldGuard 5.9 or older is found, I need 6.0 or later. {_YL}Region support for WG is disabled."
residence-yes: "{_LG}Residence was found and integrated."
residence-no: "{_YL}Residence was not found."
vault-yes: "{_LG}Vault was found and integrated."
vault-no: "{_LR}There is no Vault found. Vault is highly recommended to be installed on your server."
worldedit-yes: "{_LG}WorldEdit (WEPIF) was found and integrated."
worldedit-no: "{_YL}WorldEdit (WEPIF) was not found."
worldguard-yes: "{_LG}WorldGuard was found and integrated."
worldguard-no: "{_YL}WorldGuard was not found."
worldguard-old: "{_LR}WorldGuard 5.9 or older is found, I need 6.0 or later. {_YL}Region support for WG is disabled."
residence-yes: "{_LG}Residence was found and integrated."
residence-no: "{_YL}Residence was not found."
debug:
enable: "You will see a lot of debugging information now."
disable: "Debugging information is now hidden for you."
enable: "You will see a lot of debugging information now."
disable: "Debugging information is now hidden for you."
database:
command-answer: "Tables have been fetched."
fetched-local: "{_LG}Loaded {:E} entity, {:P} permission and {:I} inheritance rows from local cache."
fetched-remote: "{_LG}Fetched {:E} entities, {:P} permissions and {:I} inheritances."
command-answer: "Tables have been fetched."
fetched-local: "{_LG}Loaded {:E} entity, {:P} permission and {:I} inheritance rows from local cache."
fetched-remote: "{_LG}Fetched {:E} entities, {:P} permissions and {:I} inheritances."
help:
header-1: "{_LS}Perfect permission manager for multiserver environments"
header-2: "{_LS}Current serverId is '{_LG}{SERVER-ID}{_LS}' (server.properties)"
usage: "Usage of available commands:"
cmd-user-lp: "{_YL}/rscp user <user> lp {_LS}-- list user's permissions"
cmd-user-lg: "{_YL}/rscp user <user> lg {_LS}-- list user's groups"
cmd-user-p: "{_YL}/rscp user <user> prefix {_LS}-- show user's prefix"
cmd-user-s: "{_YL}/rscp user <user> suffix {_LS}-- show user's suffix"
cmd-lock: "{_YL}/rscp lock [mode] {_LS}-- enable specific maintenance mode"
cmd-unlock: "{_YL}/rscp unlock {_LS}-- disable maintenance mode"
cmd-debug: "{_YL}/rscp debug [value] {_LS}-- show/hide some debugging info to you"
cmd-fetch: "{_YL}/rscp fetch {_LS}-- reread all permissions from database"
cmd-reload: "{_YL}/rscp reload {_LS}-- reload config and restart the plugin"
cmd-help: "{_YL}/rscp help {_LS}-- show this help page"
header-1: "{_LS}Perfect permission manager for multiserver environments"
header-2: "{_LS}Current serverId is '{_LG}{SERVER-ID}{_LS}' (server.properties)"
usage: "Usage of available commands:"
cmd-user-lp: "{_YL}/rscp user <user> lp {_LS}-- list user's permissions"
cmd-user-lg: "{_YL}/rscp user <user> lg {_LS}-- list user's groups"
cmd-user-p: "{_YL}/rscp user <user> prefix {_LS}-- show user's prefix"
cmd-user-s: "{_YL}/rscp user <user> suffix {_LS}-- show user's suffix"
cmd-lock: "{_YL}/rscp lock [mode] {_LS}-- enable specific maintenance mode"
cmd-unlock: "{_YL}/rscp unlock {_LS}-- disable maintenance mode"
cmd-debug: "{_YL}/rscp debug [value] {_LS}-- show/hide some debugging info to you"
cmd-fetch: "{_YL}/rscp fetch {_LS}-- reread all permissions from database"
cmd-reload: "{_YL}/rscp reload {_LS}-- reload config and restart the plugin"
cmd-help: "{_YL}/rscp help {_LS}-- show this help page"

54
src/main/resources/languages/russian.yml

@ -9,33 +9,33 @@ generic:
maintenance-on: "{_YL}Сервер закрыт на техническое обслуживание."
maintenance-off: "{_YL}Сервер открыт для свободного входа игроков."
integration:
vault-yes: "{_LG}Vault обнаружён и подключён."
vault-no: "{_LR}Не удаётся найти плагин Vault. Рекомендуется его скорейшая установка."
worldedit-yes: "{_LG}WorldEdit (WEPIF) обнаружён и подключён."
worldedit-no: "{_YL}WorldEdit (WEPIF) не обнаружен."
worldguard-yes: "{_LG}WorldGuard обнаружён и подключён."
worldguard-no: "{_YL}WorldGuard не обнаружен."
worldguard-old: "{_LR}Найден WorldGuard 5.9 или старше, но для работы требуется версия 6.0 или новее. {_YL}Поддержка регионов WG будет отключена."
residence-yes: "{_LG}Residence обнаружён и подключён."
residence-no: "{_YL}Residence не обнаружен."
vault-yes: "{_LG}Vault обнаружён и подключён."
vault-no: "{_LR}Не удаётся найти плагин Vault. Рекомендуется его скорейшая установка."
worldedit-yes: "{_LG}WorldEdit (WEPIF) обнаружён и подключён."
worldedit-no: "{_YL}WorldEdit (WEPIF) не обнаружен."
worldguard-yes: "{_LG}WorldGuard обнаружён и подключён."
worldguard-no: "{_YL}WorldGuard не обнаружен."
worldguard-old: "{_LR}Найден WorldGuard 5.9 или старше, но для работы требуется версия 6.0 или новее. {_YL}Поддержка регионов WG будет отключена."
residence-yes: "{_LG}Residence обнаружён и подключён."
residence-no: "{_YL}Residence не обнаружен."
debug:
enable: "Теперь Вы будете видеть отладочную информацию."
disable: "Отладочная информация теперь скрыта от Вас."
enable: "Теперь Вы будете видеть отладочную информацию."
disable: "Отладочная информация теперь скрыта от Вас."
database:
command-answer: "База данных перечитана."
fetched-local: "{_LG}Восстановлено {:E} сущностей, {:P} прав и {:I} наследований."
fetched-remote: "{_LG}Получено {:E} сущностей, {:P} прав и {:I} наследований."
command-answer: "База данных перечитана."
fetched-local: "{_LG}Восстановлено {:E} сущностей, {:P} прав и {:I} наследований."
fetched-remote: "{_LG}Получено {:E} сущностей, {:P} прав и {:I} наследований."
help:
header-1: "{_LS}Идеальный плагин для мультисерверных проектов"
header-2: "{_LS}Идентификатор этого сервера установлен в '{_LG}{SERVER-ID}{_LS}' (server.properties)"
usage: "Синтаксис доступных команд:"
cmd-user-lp: "{_YL}/rscp user <user> lp {_LS}-- получение списка прав игрока"
cmd-user-lg: "{_YL}/rscp user <user> lg {_LS}-- получение дерева групп игрока"
cmd-user-p: "{_YL}/rscp user <user> prefix {_LS}-- просмотр префикса игрока"
cmd-user-s: "{_YL}/rscp user <user> suffix {_LS}-- просмотр суффикса игрока"
cmd-lock: "{_YL}/rscp lock [mode] {_LS}-- перевод сервера в режим обслуживания"
cmd-unlock: "{_YL}/rscp unlock {_LS}-- отключение режима обслуживания"
cmd-debug: "{_YL}/rscp debug [value] {_LS}-- вкл/выкл отладочной информации о Вас"
cmd-fetch: "{_YL}/rscp fetch {_LS}-- получение групп и прав из базы банных"
cmd-reload: "{_YL}/rscp reload {_LS}-- перезагрузка плагина"
cmd-help: "{_YL}/rscp help {_LS}-- эта справка"
header-1: "{_LS}Идеальный плагин для мультисерверных проектов"
header-2: "{_LS}Идентификатор этого сервера установлен в '{_LG}{SERVER-ID}{_LS}' (server.properties)"
usage: "Синтаксис доступных команд:"
cmd-user-lp: "{_YL}/rscp user <user> lp {_LS}-- получение списка прав игрока"
cmd-user-lg: "{_YL}/rscp user <user> lg {_LS}-- получение дерева групп игрока"
cmd-user-p: "{_YL}/rscp user <user> prefix {_LS}-- просмотр префикса игрока"
cmd-user-s: "{_YL}/rscp user <user> suffix {_LS}-- просмотр суффикса игрока"
cmd-lock: "{_YL}/rscp lock [mode] {_LS}-- перевод сервера в режим обслуживания"
cmd-unlock: "{_YL}/rscp unlock {_LS}-- отключение режима обслуживания"
cmd-debug: "{_YL}/rscp debug [value] {_LS}-- вкл/выкл отладочной информации о Вас"
cmd-fetch: "{_YL}/rscp fetch {_LS}-- получение групп и прав из базы банных"
cmd-reload: "{_YL}/rscp reload {_LS}-- перезагрузка плагина"
cmd-help: "{_YL}/rscp help {_LS}-- эта справка"

Loading…
Cancel
Save