Browse Source

Move permission sorting inside internal cache. New method Phrases::toPlayer(). Recolorize some console text. Other minor fixes.

master
Stanislav Usenkov 9 years ago
parent
commit
6892198196
  1. 8
      src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
  2. 5
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java
  3. 2
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  4. 11
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitRegionProviders.java
  5. 12
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java
  6. 12
      src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java
  7. 9
      src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java
  8. 24
      src/main/java/ru/simsonic/rscPermissions/Engine/IntermediateResult.java
  9. 8
      src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java
  10. 8
      src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java
  11. 19
      src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java
  12. 17
      src/main/java/ru/simsonic/rscPermissions/IndependentMain.java
  13. 2
      src/main/resources/languages/english.yml
  14. 8
      src/main/resources/languages/russian.yml

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

@ -65,9 +65,9 @@ public class BridgeForBukkitAPI
rscp.getServer().getServicesManager().register(
net.milkbowl.vault.permission.Permission.class, vaultPermission,
rscp, ServicePriority.Highest);
console.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + Phrases.INTEGRATION_V_Y.toString()));
console.sendMessage(Phrases.INTEGRATION_V_Y.toPlayer());
} else
console.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + Phrases.INTEGRATION_V_N.toString()));
console.sendMessage(Phrases.INTEGRATION_V_N.toPlayer());
}
protected void setupWEPIF()
{
@ -81,9 +81,9 @@ public class BridgeForBukkitAPI
prm.setPluginPermissionsResolver(wepif);
else
PermissionsResolverManager.initialize(wepif);
console.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + Phrases.INTEGRATION_WE_Y.toString()));
console.sendMessage(Phrases.INTEGRATION_WE_Y.toPlayer());
} else
console.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + Phrases.INTEGRATION_WE_N.toString()));
console.sendMessage(Phrases.INTEGRATION_WE_N.toPlayer());
}
public void printDebugString(String info)
{

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

@ -1,6 +1,7 @@
package ru.simsonic.rscPermissions.Bukkit;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import ru.simsonic.rscCommonsLibrary.RestartableThread;
import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes;
@ -38,8 +39,8 @@ public class BukkitDatabaseFetcher extends RestartableThread
@Override
public synchronized void run()
{
BukkitPluginMain.consoleLog.info(GenericChatCodes.processStringStatic(
(Settings.CHAT_PREFIX + Phrases.FETCHED_REMOTE_DB.toString())
BukkitPluginMain.consoleLog.info(ChatColor.stripColor(
Phrases.FETCHED_REMOTE_DB.toPlayer()
.replace("{:E}", String.valueOf(contents.entities.length))
.replace("{:P}", String.valueOf(contents.permissions.length))
.replace("{:I}", String.valueOf(contents.inheritance.length))));

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

@ -94,7 +94,7 @@ public class BukkitPermissionManager extends RestartableThread
for(Player current = updateQueue.take(); current != null; current = updateQueue.take())
{
final ResolutionResult result = rscp.permissionManager.resolvePlayer(current);
persistent.put(current, result.permissions);
persistent.put(current, result.getPermissions());
final Player player = current;
rscp.getServer().getScheduler().runTask(rscp, new Runnable()
{

11
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitRegionProviders.java

@ -15,10 +15,10 @@ import net.t00thpick1.residence.api.ResidenceManager;
import net.t00thpick1.residence.api.areas.ResidenceArea;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Phrases;
@ -36,6 +36,7 @@ public final class BukkitRegionProviders
}
public synchronized void integrate()
{
final ConsoleCommandSender console = rscp.getServer().getConsoleSender();
// WorldGuard
if(rscp.settings.isUseWorldGuard())
{
@ -43,10 +44,10 @@ public final class BukkitRegionProviders
if(pluginWG != null && pluginWG instanceof WorldGuardPlugin)
{
this.worldguard = pluginWG;
BukkitPluginMain.consoleLog.info(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + Phrases.INTEGRATION_WG_Y.toString()));
console.sendMessage(Phrases.INTEGRATION_WG_Y.toPlayer());
} else {
this.worldguard = null;
BukkitPluginMain.consoleLog.info(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + Phrases.INTEGRATION_WG_N.toString()));
console.sendMessage(Phrases.INTEGRATION_WG_N.toPlayer());
}
} else
this.worldguard = null;
@ -57,10 +58,10 @@ public final class BukkitRegionProviders
if(pluginR != null && pluginR instanceof Residence)
{
this.residence = pluginR;
BukkitPluginMain.consoleLog.info(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + Phrases.INTEGRATION_R_Y.toString()));
console.sendMessage(Phrases.INTEGRATION_R_Y.toPlayer());
} else {
this.residence = null;
BukkitPluginMain.consoleLog.info(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + Phrases.INTEGRATION_R_N.toString()));
console.sendMessage(Phrases.INTEGRATION_R_N.toPlayer());
}
} else
this.residence = null;

12
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java

@ -1,7 +1,7 @@
package ru.simsonic.rscPermissions.Bukkit.Commands;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
@ -75,7 +75,7 @@ public class CommandUser
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}\"");
answer.add("{_R}\"" + result.getPrefix() + "{_R}\"");
throw new CommandAnswerException(answer);
}
private void viewSuffix(ResolutionResult result, String user) throws CommandAnswerException
@ -84,7 +84,7 @@ public class CommandUser
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}\"");
answer.add("{_R}\"" + result.getSuffix() + "{_R}\"");
throw new CommandAnswerException(answer);
}
private void listPermissions(ResolutionResult result, String user) throws CommandAnswerException
@ -93,10 +93,8 @@ public class CommandUser
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);
for(Map.Entry<String, Boolean> entry : result.getPermissions().entrySet())
answer.add((entry.getValue() ? "{_LG}" : "{_LR}") + entry.getKey());
throw new CommandAnswerException(answer);
}
private void listGroups(ResolutionResult result, String user) throws CommandAnswerException

12
src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java

@ -35,14 +35,14 @@ public final class VaultChat extends VaultDeprecatedChat
{
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.prefix;
return result.getPrefix();
}
@Override
public String getPlayerPrefix(Player player)
{
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.prefix;
return result.getPrefix();
}
@Override
@Deprecated
@ -50,7 +50,7 @@ public final class VaultChat extends VaultDeprecatedChat
{
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.prefix;
return result.getPrefix();
}
// ***** GET PLAYER SUFFIX *****
@Override
@ -58,14 +58,14 @@ public final class VaultChat extends VaultDeprecatedChat
{
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.suffix;
return result.getSuffix();
}
@Override
public String getPlayerSuffix(Player player)
{
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.suffix;
return result.getSuffix();
}
@Override
@Deprecated
@ -73,7 +73,7 @@ public final class VaultChat extends VaultDeprecatedChat
{
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.suffix;
return result.getSuffix();
}
// ***** SET PLAYER PREFIX *****
@Override

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

@ -6,6 +6,7 @@ import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;
@ -69,11 +70,11 @@ public final class BukkitPluginMain extends JavaPlugin
final DatabaseContents contents = localStorage.retrieveContents();
contents.filterServerId(getServer().getServerId()).filterLifetime();
internalCache.fill(contents);
getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(
(Settings.CHAT_PREFIX + Phrases.FETCHED_LOCAL_CACHE.toString())
final ConsoleCommandSender console = getServer().getConsoleSender();
console.sendMessage(Phrases.FETCHED_LOCAL_CACHE.toPlayer()
.replace("{:E}", String.valueOf(contents.entities.length))
.replace("{:P}", String.valueOf(contents.permissions.length))
.replace("{:I}", String.valueOf(contents.inheritance.length))));
.replace("{:I}", String.valueOf(contents.inheritance.length)));
// Integrate Metrics
if(settings.isUseMetrics())
try
@ -124,7 +125,7 @@ public final class BukkitPluginMain extends JavaPlugin
if(metrics != null)
try
{
metrics.disable();
metrics.disable();
} catch(IOException ex) {
}
metrics = null;

24
src/main/java/ru/simsonic/rscPermissions/Engine/IntermediateResult.java

@ -0,0 +1,24 @@
package ru.simsonic.rscPermissions.Engine;
import java.util.List;
import java.util.Map;
class IntermediateResult
{
ResolutionParams params;
String prefix = "";
String suffix = "";
List<String> groups;
Map<String, Boolean> permissions;
/*
void sortPermissions()
{
final Map<String, Boolean> result = new TreeMap<>();
final ArrayList<String> sorted = new ArrayList<>(permissions.keySet());
Collections.sort(sorted);
for(String key : sorted)
result.put(key, permissions.get(key));
this.permissions = result;
}
*/
}

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

@ -3,11 +3,11 @@ package ru.simsonic.rscPermissions.Engine;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.TreeMap;
import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes;
import ru.simsonic.rscPermissions.API.EntityType;
import ru.simsonic.rscPermissions.API.RowEntity;
@ -62,7 +62,7 @@ public class InternalCache extends InternalStorage
if(implicit_u != null && implicit_u.permissions != null)
processPermissions(params, Arrays.asList(implicit_u.permissions));
params.groupList = new LinkedList<>();
params.finalPerms = new HashMap<>();
params.finalPerms = new TreeMap<>();
params.instantiator = "";
params.depth = 0;
for(RowEntity row : entities_u.values())
@ -103,8 +103,8 @@ public class InternalCache extends InternalStorage
result.suffix = GenericChatCodes.processStringStatic(result.suffix);
processPermissions(params, applicablePermissions);
result.permissions = params.finalPerms;
result.groups = params.groupList;
result.params = params;
result.groups = params.groupList;
result.params = params;
return result;
}
private ResolutionResult resolveParent(ResolutionParams params)

8
src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java

@ -6,6 +6,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.API.TranslationProvider;
import ru.simsonic.rscPermissions.BukkitPluginMain;
@ -49,7 +51,7 @@ public enum Phrases
HELP_CMD_HELP ("help.cmd-help"),
;
private final String node;
private String phrase;
private String phrase;
private Phrases(String node)
{
this.node = node;
@ -59,6 +61,10 @@ public enum Phrases
{
return phrase;
}
public String toPlayer()
{
return GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + this.toString());
}
public static void applyTranslation(TranslationProvider provider)
{
for(Phrases value : Phrases.values())

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

@ -7,13 +7,20 @@ import java.util.Map;
import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes;
import ru.simsonic.rscPermissions.API.Settings;
public class ResolutionResult
public class ResolutionResult extends IntermediateResult
{
public String prefix = "";
public String suffix = "";
public ResolutionParams params;
public Map<String, Boolean> permissions;
protected List<String> groups;
public String getPrefix()
{
return prefix;
}
public String getSuffix()
{
return suffix;
}
public Map<String, Boolean> getPermissions()
{
return Collections.unmodifiableMap(permissions);
}
public boolean hasPermission(String permission)
{
for(Map.Entry<String, Boolean> entry : permissions.entrySet())

17
src/main/java/ru/simsonic/rscPermissions/IndependentMain.java

@ -1,7 +1,6 @@
package ru.simsonic.rscPermissions;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.util.logging.Logger;
import ru.simsonic.rscPermissions.Engine.Backends.BackendDatabase;
import ru.simsonic.rscPermissions.Engine.Backends.BackendJson;
@ -19,6 +18,7 @@ public class IndependentMain
{
System.out.println("rscPermissions - Bukkit superperms plugin © SimSonic");
System.out.println("https://github.com/SimSonic/rscPermissions/");
System.out.println();
// OK, IT'S SECURE FROM YOU :)
database.initialize(null,
"SCOUT:3306/rscp_testing", // DATABASE
@ -51,14 +51,15 @@ public class IndependentMain
intCache.fill(contents);
final ResolutionResult result = intCache.resolvePlayer("87f946d8212440539d685eab07f8e266");
// Sorted output
ArrayList<String> perms = new ArrayList<>(result.permissions.keySet());
Collections.sort(perms);
for(String key : perms)
System.out.println("Permission: " + key + " = " + result.permissions.get(key));
for(Map.Entry<String, Boolean> entry : result.getPermissions().entrySet())
System.out.println("Permission: " + entry.getKey() + " = " + entry.getValue());
System.out.println();
for(String group : result.getOrderedGroups())
System.out.println("Parent: " + group);
System.out.println("Prefix: " + result.prefix);
System.out.println("Suffix: " + result.suffix);
System.out.println();
System.out.println("Prefix: " + result.getPrefix());
System.out.println("Suffix: " + result.getSuffix());
System.out.println();
System.out.println("Done.");
}
}

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

@ -1,8 +1,8 @@
generic:
enabled: "[rscp] rscPermissions has been successfully enabled."
disabled: "[rscp] rscPermissions has been disabled."
reloaded: "[rscp] rscPermissions has been reloaded."
metrics: "[rscp] Metrics enabled."
reloaded: "{_LG}Plugin and it's configuration were reloaded."
player-only: "{_LR}This command cannot be run from console."
console-only: "{_LR}This command should be run from console."
server-is-full: "{_LR}Server is full, empty slots are in reserve."

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

@ -1,19 +1,19 @@
generic:
enabled: "[rscp] Плагин rscPermissions успешно включён."
disabled: "[rscp] Плагин rscPermissions выключен."
reloaded: "[rscp] Плагин rscPermissions перезапущен, конфигурация перечитана."
metrics: "[rscp] Включён сбор статистической информации (mcstats.org)."
reloaded: "{_LG}Плагин перезапущен, конфигурация перечитана."
player-only: "{_LR}Эта команда не может быть использована из консоли."
console-only: "{_LR}Эта команда может быть использована только из консоли."
server-is-full: "{_LR}Сервер заполнен, оставшиеся слоты находятся в резерве."
maintenance-on: "{_YL}Сервер закрыт на техническое обслуживание."
maintenance-off: "{_YL}Сервер открыт для свободного входа игроков."
integration:
vault-yes: "{_LG}Vault обнаружён и подключён."
vault-yes: "{_LG}Vault обнаружен и подключён."
vault-no: "{_LR}Не удаётся найти плагин Vault. Рекомендуется его скорейшая установка."
worldedit-yes: "{_LG}WorldEdit (WEPIF) обнаружён и подключён."
worldedit-yes: "{_LG}WorldEdit (WEPIF) обнаружен и подключён."
worldedit-no: "{_YL}WorldEdit (WEPIF) не обнаружен."
worldguard-yes: "{_LG}WorldGuard обнаружён и подключён."
worldguard-yes: "{_LG}WorldGuard обнаружен и подключён."
worldguard-no: "{_YL}WorldGuard не обнаружен."
worldguard-old: "{_LR}Найден WorldGuard 5.9 или старше, но для работы требуется версия 6.0 или новее. {_YL}Поддержка регионов WG будет отключена."
residence-yes: "{_LG}Residence обнаружён и подключён."

Loading…
Cancel
Save