Browse Source

Fixed wrong call to recalculate perms from RegionUpdateObserver.

+ Debug info added.
master
Stanislav Usenkov 10 years ago
parent
commit
7ef9b24b5a
  1. 17
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  2. 2
      src/main/java/ru/simsonic/rscPermissions/Bukkit/RegionUpdateObserver.java
  3. 4
      src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java
  4. 15
      src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java

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

@ -10,10 +10,12 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue;
import org.bukkit.entity.Player;
import org.bukkit.permissions.PermissionAttachment;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.ResolutionParams;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
import ru.simsonic.rscUtilityLibrary.RestartableThread;
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes;
public class BukkitPermissionManager extends RestartableThread
{
@ -73,8 +75,11 @@ public class BukkitPermissionManager extends RestartableThread
suffixes.remove(player);
persistentPermissions.remove(player);
transientPermissions.remove(player);
synchronized(debug)
{
debug.remove(player);
}
}
@Override
public void run()
{
@ -115,6 +120,12 @@ public class BukkitPermissionManager extends RestartableThread
final Boolean asterisk = attachment.getPermissions().get("*");
if(rscp.settings.isAsteriskOP())
player.setOp((asterisk != null) ? asterisk : false);
// Debugging information
if(isDebugging(player))
player.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix
+ "[DEBUG] {_DS}Inheritances list: {_LS}" + result.groups.toString()
+ "{_DS}; you have total {_LS}" + attachment.getPermissions().size()
+ "{_DS} permissions."));
}
});
}
@ -155,10 +166,15 @@ public class BukkitPermissionManager extends RestartableThread
return result.toArray(new String[result.size()]);
}
public boolean isDebugging(Player target)
{
synchronized(debug)
{
return debug.contains(target);
}
}
public void setDebugging(Player target, boolean value)
{
synchronized(debug)
{
if(value)
debug.add(target);
@ -166,3 +182,4 @@ public class BukkitPermissionManager extends RestartableThread
debug.remove(target);
}
}
}

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

@ -33,7 +33,7 @@ public class RegionUpdateObserver extends RestartableThread
for(; !Thread.interrupted(); Thread.sleep(granularity))
for(Player player : movedPlayers.getMovedPlayersAsync())
if(rscp.regionListProvider.isRegionListChanged(player))
rscp.permissionManager.resolvePlayer(player);
rscp.permissionManager.recalculatePlayer(player);
} catch(InterruptedException ex) {
}
}

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

@ -40,6 +40,7 @@ public final class BukkitPluginMain extends JavaPlugin
@Override
public void onLoad()
{
Phrases.extractTranslations(getDataFolder());
settings.onLoad();
consoleLog.log(Level.INFO, "[rscp] This server`s ID is \"{0}\". You can change it in server.properties.", getServer().getServerId());
consoleLog.log(Level.INFO, "[rscp] rscPermissions has been loaded.");
@ -47,12 +48,11 @@ public final class BukkitPluginMain extends JavaPlugin
@Override
public void onEnable()
{
Phrases.extractAll(getDataFolder());
settings.readSettings();
internalCache.setDefaultGroup(
settings.getDefaultGroup(),
settings.isDefaultForever());
Phrases.translate(settings.getTranslationProvider());
Phrases.applyTranslation(settings.getTranslationProvider());
// Restore temporary cached data from json files
final DatabaseContents contents = localStorage.retrieveContents();
contents.filterServerId(getServer().getServerId()).filterLifetime();

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

@ -20,8 +20,8 @@ public enum Phrases
INTEGRATION_WG_N ("integration.worldguard-no"),
INTEGRATION_R_Y ("integration.residence-yes"),
INTEGRATION_R_N ("integration.residence-no"),
DEBUG_ON ("debug.enabled"),
DEBUG_OFF ("debug.disabled"),
DEBUG_ON ("debug.enable"),
DEBUG_OFF ("debug.disable"),
MYSQL_FETCHED ("mysql.fetched"),
;
private final String node;
@ -35,17 +35,17 @@ public enum Phrases
{
return phrase;
}
public static void translate(TranslationProvider provider)
public static void applyTranslation(TranslationProvider provider)
{
for(Phrases value : Phrases.values())
value.phrase = provider.getString(value.node);
}
public static void extractAll(File workingDir)
public static void extractTranslations(File workingDir)
{
extract(workingDir, "english");
extract(workingDir, "russian");
extractTranslation(workingDir, "english");
extractTranslation(workingDir, "russian");
}
public static void extract(File workingDir, String langName)
private static void extractTranslation(File workingDir, String langName)
{
try
{
@ -53,6 +53,7 @@ public enum Phrases
if(langFile.isFile())
langFile.delete();
final FileChannel fileChannel = new FileOutputStream(langFile).getChannel();
fileChannel.force(true);
final InputStream langStream = BukkitPluginMain.class.getResourceAsStream("/languages/" + langName + ".yml");
fileChannel.transferFrom(Channels.newChannel(langStream), 0, Long.MAX_VALUE);
} catch(IOException ex) {

Loading…
Cancel
Save